对HashMap最好的关键是什么?
我只使用小数,每个键都是以前的++,但这只是我的想法,我不知道它是否有效。
我读到了hashCode这个常用于哈希表的值,但人们说不要滥用hashCode()作为键。
等待您的答案和资源链接。 这是代码片段:
Identifier identifier = new Identifier();
identifier.setName(getString(currentToken));
identifier.setLine(currentLineNumber);
int key = identifier.hashCode();
tableOfIdentifiers.put(key, identifier);
答案 0 :(得分:1)
用户代码极少用于在hashCode
方法的实现之外直接调用hashCode
自定义对象。特别是,在您的情况下,调用是不必要的,因为HashMap
和HashSet
依赖于在内部调用hashCode
。
从您的示例中看,您似乎不需要HashMap
:HashSet
就足够了。
private Set<Identifier> tableOfIdentifiers = new HashSet<Identifier>();
...
if (!tableOfIdentifiers.add(identifier)) {
... // Duplicate identifier is detected
}
答案 1 :(得分:0)
理想情况下,地图用于拥有一些键值对。密钥应该是唯一且易于理解的。地图可能具有不同键的重复值,但如果使用哈希码作为键,则地图将覆盖您之前的值。尝试使用逻辑名称作为键。可以是empcode,studentRollNumber等。