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;
- }
public boolean equals(Object arg0) {
if (arg0 != null && arg0 instanceof UserInfo) {
return this.getId().equals(((UserInfo) arg0).getId());
}
return false;
}