如果我们不覆盖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);
<小时/> 注意:
澄清问题:
增加:
我试图在Java文档中找到它,但没有得到它
我试图找到这些地方:
答案 0 :(得分:2)
如果我们不覆盖hashCode(),默认情况下如何计算自定义对象的hashCode? p>
它使用Object中的hashCode()
方法。基本上它是一个参考地址。 Javadoc说,
尽可能合理,Object类定义的hashCode方法确实为不同的对象返回不同的整数。 (这通常通过将对象的内部地址转换为整数来实现,但JavaTM编程语言不需要此实现技术。)
答案 1 :(得分:2)
所有类都扩展Object
类,它具有hashcode
()方法。它通常返回一个不同的值,因为它转换了Object的内部地址,但不一定是必需的