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方法。
下面是 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; }
相关文章推荐
- java中ArrayList的contains(obj)和indexOf(obj)方法的调用顺序
- java中ArrayList的remove方法删除一个数据时问题简述
- java arrayList.subList方法问题
- [Java基础]ArrayList的contains方法,你用对了吗?
- java 慎用ArrayList的contains方法,使用HashSet的contains方法代替
- Java中,ArrayList的contains()和HashSet的contains()的区别,哈希值问题
- java ArrayList add()方法数据被覆盖问题
- Android RSA与Java RSA加密不同标准产生问题的解决方法
- sql 与java 连接 的问题 及解决方法
- java中复写方法和同名变量的调用问题
- java 向上转型之后调用子类的同名变量/方法的问题(多态)
- 关于ndk开发使用jni回掉java方法更新UI的问题
- Java中文问题及最优解决方法
- Java ArrayList线程不安全问题
- 2015年7月4日解决问题:eclipse连接access数据库问题//java五中布局及其应用方法//equals()与==的区别等
- Java中文问题及最优解决方法
- JAVAWeb、 Easyui、Ibatis、Oracle项目遇到问题及解决方法
- 【Java】ArrayList<String>转化为String数组问题
- java中导入了包却无法调用包中方法问题解决
- JAVA学习之一——在DOS环境下编译遇到的问题及解决方法