可变集合是否应该覆盖等于和哈希码?

2022-09-01 19:27:46

我只是想知道覆盖和可变集合是否是一个好主意。这意味着,如果我将这样的集合插入到 a 中,然后修改该集合,则 将无法再找到该集合。这是否意味着只有不可变集合才能覆盖和,或者这是Java程序员简单地忍受的麻烦?equalshashCodeHashSetHashSetequalshashCode


答案 1

您应该重写,并且您的类是否应该像是值类型一样运行。对于集合,情况通常并非如此。equalshashCode

(我真的没有太多的Java经验。这个答案基于C#。


答案 2

深度和浅层相等的问题比Java更大;所有面向对象的语言都必须关注它。

添加到集合中的对象应重写 equal 和哈希代码,但内置于集合接口的抽象实现中的默认行为足以满足集合本身的需求。


推荐