使用indexOf()函数时,我应该覆盖哪个函数

use*_*520 0 java

在java中使用indexOf()函数时,我应该覆盖哪个函数.我有一个数组列表,然后我接受一个输入作为ID并创建一个包含ID的对象,所有其他元素都为null,然后我需要传递该对象并获取包含该对象的元素的索引

Mat*_*der 5

equals()方法

public boolean equals(Object o) {
  if (o instanceof MyObject) {
    //id comparison
    MyObject mo = (MyObject)o;
    return mo.id.equals(id);
  }
  return false;
}
Run Code Online (Sandbox Code Playgroud)

改变MyObject你的班级.

记得改变hashCode()以及@Hovercraft指出.equals和hashCode一起使用(为它们读取javadoc).否则你可能遇到一些讨厌的,可能很难找到错误.

一个例子:

使用java 7+,您可以这样做:

public int hashCode() {
    return java.util.Objects.hashCode(id);
}
Run Code Online (Sandbox Code Playgroud)

  • 您应该提到`Objects.hashCode()`是Java 7+;)是的,这是2012年,但是...... (2认同)