重写object的 hashcode和equals 方法,但是将同一个对象多次放入set 中,并没有调用equals 方法,而只是调用了hashcode 方法。 参考源码时发现相同的对象会略过equals方法。
以下为部分源码
if (p.hash == hash && ((k = p.key) == key || (key != null && key.equals(k))
其中 (k = p.key) == key 判断为true,从而略过后面的equals方法。
本文探讨了在Java中使用Set存储对象时,如何通过重写hashCode和equals方法确保对象唯一性的问题。当相同对象多次添加到Set中时,仅调用hashCode方法进行比较,如果hash值相等且对象引用相同,则不会调用equals方法。
重写object的 hashcode和equals 方法,但是将同一个对象多次放入set 中,并没有调用equals 方法,而只是调用了hashcode 方法。 参考源码时发现相同的对象会略过equals方法。
以下为部分源码
if (p.hash == hash && ((k = p.key) == key || (key != null && key.equals(k))
其中 (k = p.key) == key 判断为true,从而略过后面的equals方法。
1106

被折叠的 条评论
为什么被折叠?
