加拿大华人论坛 德国工作一个问题,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
·加拿大新闻 CRA花$1800万造聊天机器人66%答案竟然是错的!
·加拿大新闻 北约克一名男子凌晨遇袭 情况危殆
·加拿大新闻 奔驰小G谍照,或搭混动或燃油动力
·加拿大新闻 合资品牌电动化反攻战,能否重塑中国豪华电动车市场格局
·加拿大新闻 房东注意!短租不是想做就能!BC女律师业主手握“批准邮件”
·中文新闻 邦迪大规模枪击事件:我们对悉尼犹太光明节庆祝活动袭击事件
·中文新闻 邦迪大规模枪击事件:ASIO 可能将澳大利亚定为恐怖级别;警惕