您的位置:首页 > 编程语言 > Java开发

java ArrayList的contains方法问题

2013-11-23 00:58 453 查看
arrayList的contains方法比较是否包含元素的时候,调用的是 对象的equals方法,也就是说如果对象没有重写equals方法,那么其实比较的事堆中的地址是否相等了。

下面是 contains方法的源码。

public boolean contains(Object o) {

return indexOf(o) >= 0;

}

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;

}

故要调用list的contains方法的时候,如果比较的对象的并非出自同一内存块,则需覆盖对象的equals方法。

public boolean equals(Object arg0) {
if (arg0 != null && arg0 instanceof UserInfo) {
return this.getId().equals(((UserInfo) arg0).getId());
}
return false;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: