gpt4 book ai didi

Java ArrayList IndexOf - 查找对象索引

转载 作者:搜寻专家 更新时间:2023-10-30 20:59:17 25 4
gpt4 key购买 nike

假设我有一个类

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; ;只需返回 boolean 表达式。
  • 确保您实际上覆盖了您的 equals 方法 - 其签名需要一个 Object 参数,而不是 Date

关于Java ArrayList IndexOf - 查找对象索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17519019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com