让我说我有hashmap存储,它包含例如 - (11,name1)(11,name2),我调用HashMap.get(11),它只显示name2,这意味着它覆盖了11的第一个输入.我怎么能存储name1和name2都是ID 11使用hashmap?我知道我可以同时使用HashMap和HashSet,但我不想为HashMap创建每个HashSet.我只想使用hashSet.我该怎么做?我希望你能帮助我.谢谢.
public void insert(int ID, String key){
int hashKey = Hash(key);
System.out.println("Hash Key" + hashKey);
int node = Find(ID,hashKey);
storeR.put(node, key);
}
Run Code Online (Sandbox Code Playgroud)
您可以使用:
HashMap<Integer, List<String>>
Run Code Online (Sandbox Code Playgroud)
在HashMap你必须为每个键放一个值.所以当然,如果你把相同的键放两次,那么该值将被覆盖.
解决方案是为每个键保存一组值.
在您的代码而不是:
storeR.put(node, key);
Run Code Online (Sandbox Code Playgroud)
你应该写:
List<String> nodeValues = storeR.get(node);
if (nodeValues == null) {
nodeValues = new ArrayList<String>();
storeR.put(node, nodeValues );
}
nodeValues.add(key);
Run Code Online (Sandbox Code Playgroud)
你还应该改变storeR类型HashMap<Integer, List<String>>
MultiMap 也是一个类似的解决方案.
| 归档时间: |
|
| 查看次数: |
392 次 |
| 最近记录: |