我们都知道hashCode()方法使用来提高Map里面的搜索效率的,Map会根据不同的hashCode()来放在不同的桶里面,Map在搜索一个对象的时候先通过hashCode()找到相应的桶,然后再根据equals()方法找到相应的对象.要正确的实现Map里面查找元素必须满足一下两个条件:
(1)当obj1.equals(obj2)为true时obj1.hashCode() == obj2.hashCode()必须为true----这一点我能理解
(2)当obj1.hashCode() != obj2.hashCode()为true时obj.equals(obj2)必须为true ------这一点就弄不明白了?这是为什么呢?为什么equals比较为true了,而hashCode的值为什么就不一定相等呢?郁闷
那位高手能不能给解析一下 |