gpt4 book ai didi

java - 内部对象更改时 HashSet 的哈希解决方法

转载 作者:搜寻专家 更新时间:2023-10-31 08:14:00 25 4
gpt4 key购买 nike

这个 SO 的答案解释了我遇到的问题:HashSet.remove() and Iterator.remove() not working

基本上,一旦我向 HashSet 添加了一些东西,如果我修改了它的任何字段,那么该集合将无法通过包含具有完全相同字段的对象的集合的任何相等性测试,因为存储它的哈希码是因为它设置了不同的字段。

那么,既然这个答案解释了发生了什么,那么有什么好的解决方法既可以使用集合的唯一性又可以修改集合中对象的内部字段?或者这是不可能的?

最佳答案

如果您修改的字段不是相等性测试的一部分,那么它们也不应该是哈希码计算的一部分。在这种情况下没有问题:您只需修改这些字段即可。

如果字段相等性测试的一部分,最干净的方法可能是从集合中删除对象,然后修改并重新插入它。

如果是后者,并且您发现自己经常这样做,您可能需要重新审视手头问题的数据结构选择。

关于java - 内部对象更改时 HashSet 的哈希解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8805807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com