b****g 发帖数: 192 | 1 object class有个hashcode和equals函数。
hashcode()用object的地址算出hashcode
equals()计算两个object是不是相等。
对吗?
这个“相等”是什么意思?
如果面试官问道这两个函数的作用,该怎么回答?
之所以来问,就是因为google出来的答案千奇百怪自相矛盾。
恳请大家不要阴阳怪气的回答。 |
v****t 发帖数: 338 | 2 做hashtable用?
【在 b****g 的大作中提到】 : object class有个hashcode和equals函数。 : hashcode()用object的地址算出hashcode : equals()计算两个object是不是相等。 : 对吗? : 这个“相等”是什么意思? : 如果面试官问道这两个函数的作用,该怎么回答? : 之所以来问,就是因为google出来的答案千奇百怪自相矛盾。 : 恳请大家不要阴阳怪气的回答。
|
a*****u 发帖数: 1712 | |
s*******n 发帖数: 305 | 4 刚好我也复习下
equals()反映的是对象或变量具体的值,即两个对象里面包含的值--可能是对象的引用
,也可能是值类型的值。
而hashCode()是对象或变量通过哈希算法计算出的哈希值。
之所以有hashCode方法,是因为在批量的对象比较中,hashCode要比equals来得快,很
多集合都用到了hashCode,比如HashTable。
两个obj,如果equals()相等,hashCode()一定相等。
两个obj,如果hashCode()相等,equals()不一定相等(Hash散列值有冲突的情况,虽
然概率很低)。
所以:
可以考虑在集合中,判断两个对象是否相等的规则是:
第一步,如果hashCode()相等,则查看第二步,否则不相等;
第二步,查看equals()是否相等,如果相等,则两obj相等,否则还是不相等。
更多详情: http://www.cnblogs.com/nktblog/articles/2518111.html |
c********p 发帖数: 1969 | |
w*********m 发帖数: 4740 | 6 hashmap/hashtable/hashset 用hashcode, treemap/treeset用equals
经典面试题是,如果override的equals,还要考虑override哪个function,就是
hashcode
【在 b****g 的大作中提到】 : object class有个hashcode和equals函数。 : hashcode()用object的地址算出hashcode : equals()计算两个object是不是相等。 : 对吗? : 这个“相等”是什么意思? : 如果面试官问道这两个函数的作用,该怎么回答? : 之所以来问,就是因为google出来的答案千奇百怪自相矛盾。 : 恳请大家不要阴阳怪气的回答。
|