java - 在 Java HashSet 中,它如何计算自定义对象的 hashCode?

标签 java hashmap javadoc hashcode custom-object

<分区>

如果我们不覆盖 hashCode(),默认情况下它如何为自定义对象计算 hashCode?

class TrieNode {
    Character letter;
    TrieNode parent;
    Map<Character, TrieNode> children;
    boolean isEndOfWord;
    TrieNode(Character letter, TrieNode parent, boolean isEndOfWord) {
        this.letter = letter;
        this.parent = parent;
        this.isEndOfWord = isEndOfWord;
        children = new HashMap<Character, TrieNode>();
    }
}

用法:

Set<TrieNode> set = new HashSet<TrieNode>();
TrieNode trieNode = new TrieNode('c', parentNode, true);
set.add(trieNode);


注意:

  • 如果我们不覆盖“hashCode()”。

澄清问题:

  • 默认情况下,这个 HashSet 如何计算这个自定义的 hashCode 对象?
  • 在 Java 文档的什么地方可以找到它?

添加:
我试图在 Java 文档中找到它,但没有找到它。
我试图找到这些地方:

  • HashSet.class
  • AbstractSet.class
  • 对象类
  • 系统类

最佳答案

If we do not override the hashCode(), how it calculate hashCode for custom object by default?

它使用 Object 中的 hashCode() 方法。本质上它是一个引用地址。 Javadoc说,

As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the JavaTM programming language.)

关于java - 在 Java HashSet 中,它如何计算自定义对象的 hashCode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25248755/

相关文章:

java - 尝试将 BufferedImage 绘制到文件中,但不起作用

java - 自定义单元格渲染器可以定义对象(如表单)的属性吗?

java - 查找 HashMap 中是否已存在对象

java - 类的实例作为 hashmap 中的键

java - 检查网络上java发送/接收的数据类型

java - 如何根据鼠标单击获取 3D 中点的坐标?

java.util.HashMap 无法转换为 org.apache.axiom.om.OMElement

history - 从哪里可以获得 JDK 1.0.2 JavaDocs 的副本?

java - 如何配置避免加入 Javadoc 行的 Eclipse Java 格式?

java - 如何使用 maven 为我创建的库生成 java 文档和源代码