equals判断是否相同
contains判断某个对象是否含有这个元素
都是判断的那contains不可以直接用equals直接判断吗?
谁能给我说下他们具体的用法啊???
contains判断某个对象是否含有这个元素
都是判断的那contains不可以直接用equals直接判断吗?
谁能给我说下他们具体的用法啊???
解决方案 »
- 正则表达式如何把String截取位定长的字符数组?
- 关于package的路径问题,新手提问
- 一个弄不明白的I/O问题,关于socket的
- java 实现多个接口
- 想要扩展arale网络爬虫,但是在抓取是总会提示java.lang.outofmemoryerror而终止程序。
- 在Applet使用JSObject调用jacascript出现stack overflow
- 向數據庫中插入中文的問題
- 请问在linux下用什么编译器?linux自带了JAVA的编译器吗?
- java除了慢一点其它哪儿都好,同意的举手!!
- 哪儿有JdbcOdbcDriver
- Java对象创建过程
- JDBC2.0的批处理删除数据问题
例如,一个AarryList 有1000个String元素,现在需要你判断里面是否有我的String id:lzw0286,
你难道不用contains ,而会自己去写个一方法,来迭代arrayList,取出一个一个String来equals吗?其实这2个方法主要看使用的情形,看样子楼主还不是很理解这2者的区别。
equals是比较两个东西是否等同,这个适用于任何类别的对象
contains是是否包含的意思,那肯定.左边的对象是一个容器了
String现在也有一个contains,那是因为String是一个字符的容器
contains内部如何实现要看具体是哪种容器,ArrayList这种随机访问容器内部就是用equals去比较的,和你常识中的实现应该是一样的,HashSet这类容器就是用hashcode来比较的了
下面我粘一段ArrayList的代码吧
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;
}
首先,hashcode是一种查找对象的算法,当比较2个对象是否相等时,先会到hashcode对应的内存空间里去找,如果2个对象是在同一个内存空间,再去比较2个对象的equals方法。
至于性能,这个就没有研究过了。感觉有点扯远了。楼主记住以下2点就可以了。
当比较对象A与对象B是否相等时要调用 equal方法
当判断对象A是否在集合里时使用contains.在使用contains的地方你可以不使用,而自己用equal一个一个比较
但是当使用equal的地方,你是无法使用contains替代的。
contains常用与集合中判断某个对象是否含有这个元素
equals是判断2对象是否相等
而contains是判断某个对象是否在一个容器里面,是包含的关系·
contains容器里面判断某个对象是否含有这个元素
包含和相等时不一样的!!