关于hashCode的疑问
刚看了关于hashCode的一些文章,也大致了解了hashCode的功能,但是在看文章的时候,产生了一个疑问:
文章中把一个Set比做一堆桶,每个桶都有一个编号,这个编号就是hashCode。每个桶里面都装有元素。
那么把一个新的元素加入到set中时,需要获取元素的hashCode,通过hashCode查找桶,然后再对桶里面的元素分别用equals进行比较,如果没有相同的元素,则填入set。
问题是,如果上面的说法是正确的,那么如果有两个set,如set1和set2。当set1新增了一个元素test1后, set2再次增加test1时,也是通过test1的hashCode查询,这时就应该出现问题了啊,因为这个hashCode对应的地址已经有元素,并且equals也相同(因为都是test1)。可实际情况是set2也可以增加test1,说明没有问题。不理解中。。。