我应该为HashMap使用哪些键?

时间:2015-03-31 09:04:29

标签: java hash hashtable

对HashMap最好的关键是什么?

  1. 我只使用小数,每个键都是以前的++,但这只是我的想法,我不知道它是否有效。

  2. 我读到了hashCode这个常用于哈希表的值,但人们说不要滥用hashCode()作为键。

  3. 等待您的答案和资源链接。 这是代码片段:

    Identifier identifier = new Identifier();
    identifier.setName(getString(currentToken));
    identifier.setLine(currentLineNumber);
    int key = identifier.hashCode();
    tableOfIdentifiers.put(key, identifier);
    

2 个答案:

答案 0 :(得分:1)

用户代码极少用于在hashCode方法的实现之外直接调用hashCode自定义对象。特别是,在您的情况下,调用是不必要的,因为HashMapHashSet依赖于在内部调用hashCode

从您的示例中看,您似乎不需要HashMapHashSet就足够了。

private Set<Identifier> tableOfIdentifiers = new HashSet<Identifier>();
...
if (!tableOfIdentifiers.add(identifier)) {
    ... // Duplicate identifier is detected
}

答案 1 :(得分:0)

理想情况下,地图用于拥有一些键值对。密钥应该是唯一且易于理解的。地图可能具有不同键的重复值,但如果使用哈希码作为键,则地图将覆盖您之前的值。尝试使用逻辑名称作为键。可以是empcode,studentRollNumber等。