【发布时间】:2016-05-24 13:37:07
【问题描述】:
我想知道 ArrayList 的方法 indexOf 是如何实现的。事实上,我已经像这样覆盖了 equals 方法:
public class CustomObject {
@Override
public boolean equals(Object o) {
if(o instanceof CityLoader)
return ((CityLoader)o).getName() == this.name;
else if (o instanceof String)
return this.name.equals((String)o);
return false;
}
}
虽然这将避免我也覆盖 indexOf 方法,但似乎我完全错了。 当我尝试时
ArrayList<CustomObject> customObjects = new ArrayList<CustomObject>
... insert customobject into the arraylist ...
customObjects.indexOf(new String("name"))
indexOf 返回 false 但它应该返回 true。 (我检查了我要查找的元素是否存在)
我完全错了吗?
【问题讨论】:
-
"我想知道一个ArrayList的方法indexOf是如何实现的"你不需要知道它是如何实现的,你需要知道知道合同是什么。有一个工具:The JavaDoc,它说:“返回此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则返回 -1。更正式地说,返回最低的索引 i 使得
(o==null ? get(i)==null : o.equals(get(i))),如果没有这样的索引,则为 -1。"
标签: java overriding equals indexof