【发布时间】:2014-08-11 17:13:31
【问题描述】:
如果我们不重写 hashCode(),它默认如何计算自定义对象的 hashCode?strong>
即
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
- Object.class
- System.class
【问题讨论】:
-
Object.hashCode 将被使用,如果你不覆盖它。
-
每个类都扩展了Object,并且这个类有一个定义的hashCode
标签: java hashmap javadoc hashcode custom-object