francistao/LearningNotes

改变集合中对象属性,依然可以remove掉

valueNow opened this issue · 5 comments

我demo试了一个,改变集合中对象的属性,然后再remove这个元素,是可以remove掉得啊,打印集合的size,减一了啊

image
image
我这边试的demo也是可以remove掉

我用的Eclipse也可以remove掉,求解答

重写了equals 和hashCode方法吗? hashset的内部实现用的是hashmap. hashmap判定是 通过 是否是同一个对象 && hashcode相等. 或者 equals方法相等.

这个Person类应该是重写了hashCode方法的,比如最简单的,

@Override hashCode() { return age; }

这样在p3修改了age之后对于hashset来说就变成另一个元素了,当然remove不掉,再添加时也会认为是另一个元素所以size会变成4

remove 对象的地址,