加拿大华人论坛 德国工作一个问题,java高手进
在加拿大
把你重写的taetigkeit里面的hashcode和equals方法发来看看.
还可以在remove设断点调试,记录你调用remove的时候那个taetigkeit的hash码和当时set里面的那个taetigkeit的hash码.
或者简单试试再add一个taetigkeit看set会不会拒绝.
评论
解决了就好,基本上看你描述问题就出在对对象是否相等的判断上,如果hashset用你想移除的那个obj和他里面包含的obj比较得出结果是不一致,就不会移除.一般这种情况就是去检查hashcode和equals方法的实现,
hashset判断是否重复的工作原理搜一下就有,首先调用 obj 的 hasCode 方法得到该对象的哈希码,HashSet 会把它的哈希码转换成一个数组下标来记录这个obj 的位置.位置是空,那么就把obj对象添加到链表上,如果不为空,那就遍历这个链表,用obj的equals方法来判断是否和其中的某个元素重复.
如果出现你创建两个同样的对象但是都可以放入hashset的情况,那基本上就是hashcode和equals实现有问题
评论
如你所描述,这个Hashset是Immutable的,来自某个(接口),不允许编辑
评论
http://stackoverflow.com/questio ... bject-that-is-equal
·中文新闻 悉尼铁路工会纠纷:避免火车混乱的协议细节浮出水面
·中文新闻 为什么比尔·肖顿体现了澳大利亚政治最好和最坏的一面