当前位置: 首页 > 面试题库 >

Java ArrayList IndexOf-查找对象索引

毕泽宇
2023-03-14
问题内容

可以说我有一堂课

public class Data{
    public int k;
    public int l;
    public Data(int k, int l){
      this.k = k; 
      this.l = l;
    }
    public boolean equals(Date m){
      if(this.k == m.k && this.l = m.l)
           return true;
      return false;
    }
}

我将一些数据对象添加到ArrayList中:

ArrayList<Data> holder = new ArrayList<Data>;
Data one = new Data(0,0);
Data two = new Data(0,4);
Data three = new Data(0,5);

为什么indexOf找不到这个?:

holder.indexOf(new Data(0,4)); //returns -1

indexOf是否比我自己遍历整个数组列表更好?还是我错过了一些东西。


问题答案:

indexOf()方法 经过整个列表。这是Java 7源代码的摘录:

public int indexOf(Object o) {
    if (o == null) {
        for (int i = 0; i < size; i++)
            if (elementData[i]==null)
                return i;
    } else {
        for (int i = 0; i < size; i++)
            if (o.equals(elementData[i]))
                return i;
    }
    return -1;
}

让Java通过它比自己编写它更好。只要确保您的equals方法足以找到所需的对象即可。您还需要覆盖hashCode()

我不会写出您的equals方法,但是我建议您至少:

  • 检查是否为空
  • 测试您要比较的实例是否相同
  • 你不需要做if(boolean_expr) { return true; }; 只需返回布尔表达式。
  • 确保您实际上覆盖了equals方法-该方法的签名需要一个Object参数,而不是Date


 类似资料:
  • 问题内容: 例如我有这个数组: 如何从对象获取价值指数?例如“ Country”:“ Austria”,该指数为3 问题答案: 您可以在最新的浏览器中使用,但Internet Explorer中不支持此功能,只有Edge 为了在IE9及更高版本中提供支持,您可以改用

  • 我有一个对象数组,当我使用indexOf时,我想在其中找到所选对象的索引,我得到的值为-1,任何人都可以告诉我如何在javascript中找到对象的indexOf

  • 我有一个ArrayList,从ArrayList的末尾(即使用add(object)方法)以串行方式(即逐个)填充Integer类型的对象。每次我这样做,ArrayList中的其他对象都会左移一个索引。 在我的代码中,我想在ArrayList中找到一个随机对象的索引。我想避免使用indexOf方法,因为我有一个非常大的ArrayList,循环将花费大量时间。有什么解决办法吗?如何在某些数据结构中保

  • 问题内容: 我在MongoDB上的Java查询中遇到了一些麻烦。 我在数据库中具有以下结构: 我想在数据库中查询字段’Sta​​tus.name’,例如SELECT * FROM table WHERE status.name =’Expired’ 我将如何在Java中为MongoDB进行这样的查询? 感谢您的帮助或建议! 问题答案: 这是一个例子:

  • 你会认为这是一件简单的事情。我有一个在我的集合中的对象ID列表。我想根据对象ID获得一条记录。谷歌过,但没有任何帮助。 所以我有对象id:5106c7703abc120a04070b34 此打印: 我试过上述发现的不同版本。它们都无法编译: 查找({_id= 它们都不起作用。如何使用对象id查找(findone)单个记录??

  • 问题内容: 我有一个数组: 我无法更改数组的结构。我正在传递ID为,我想获取数组中的该对象。 如何在JavaScript或jQuery中做到这一点? 问题答案: 使用方法: 从MDN: 如果数组中的元素满足提供的测试功能,则该方法返回数组中的第一个值。否则返回。 如果要查找其 索引 ,请使用: 从MDN: 该方法返回满足提供的测试功能的数组中第一个元素的索引。否则返回-1。 如果要获取匹配元素的数