java - 如果我不在 java 中的对象中使用哈希表或哈希集,我是否需要实现 hashcode()

标签 java hash hashtable equals hashcode

考虑这个理论场景:

我有一个 Person 类。我不会对此对象执行任何查找操作。 我将在ArraysList中使用它们,但不会在SetsMaps中使用它们。 但我想检查两个person对象列表是否相等

例如:

List<Person> list1 = new ArrayList<>();
List<Person> list2 = new ArrayList<>();

如果我想检查这些列表是否相等System.out.println(list1.equals(list2))

我必须在我的 Person 类中实现 equals 方法。我还需要实现Hashcode()吗? 我不会将我的 Person 对象散列到存储桶中(仅为此我需要 Hashcode()) 所以我认为可能没有必要

最佳答案

如果您要覆盖 equals,最佳实践是实现 hashCode。即使您现在可能不使用它们作为 key ,但将来可能会使用它们。如果您将此类提供给其他人使用,那么您无法知道他们将如何使用它。

我建议您覆盖它,并在您覆盖一个覆盖另一个时养成习惯。从长远来看,它会对您有所帮助。

关于java - 如果我不在 java 中的对象中使用哈希表或哈希集,我是否需要实现 hashcode(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21392523/

相关文章:

Java枚举自动递增条目?

php - 在php中对上传文件的哈希内容

c - 二进制哈希函数族

java - 我在java中实现了自己的哈希表,但是我需要使用值而不是键来删除对象

c++ - 在 C++ 哈希表代码中返回空迭代器

java - 使用Gson序列化其中包含\n的字符串

java - Spring无法调用Rest Endpoint得到404

java - 我对某些用户输入的错误检查方法不起作用

java - 持久化 sha256 哈希对象?

linux - 命令 'md5sum' 最后没有 '-' token