在 Java 中使用列表时覆盖 equals()

Overriding equals() when using Lists in Java

我有点困惑。假设我有 class A 和一些 List<A> 在其他一些 class B.

因此,因为我使用的是 列表,所以允许重复。因为允许重复(这意味着不需要比较),我是否必须覆盖方法 equals()hashCode() in class一个?

所以这里强调的是列表(允许重复-不需要比较)。

我应该在使用 Set 时覆盖这两个方法(不允许重复 - 我们需要定义如何比较对象)? (99% 确定这是正确的答案,只是想检查一下并确保我得到 100% 正确的答案:ListSet

注意:我没有在堆栈中找到答案,因为没有人问过与使用列表和允许重复项完全相同的问题。

如果您不打算将任何 A 对象相互比较 - 这意味着您既没有使用 Set,也没有使用 List 方法,例如 indexOfcontains -- 那么你不需要实现 equalshashCode.

但是,如果您确实打算使用 indexOfcontains —— 或者如果您打算 测试 您的代码,例如通过断言 List 中的 A 等于某些预期的 A - 那么您确实需要实施 equals,并且实施 [=15] 是不好的做法=] 而没有实施 hashCode。您不需要 good hashCode 的实现,但您应该有一个。