HashMap覆盖Java的nextvalue - java

可以说我有hashmap存储,它包含例如-(11,name1)(11,name2),我调用HashMap.get(11),它仅显示name2,这意味着它将覆盖11的第一个输入。如何存储我知道我可以同时使用HashMap和HashSet,但ID1和name2都使用ID 11,但我不想为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);
    }

参考方案

您可以使用:

HashMap<Integer, List<String>>

HashMap中,您必须为每个键输入一个值。因此,当然,如果您两次输入相同的键,则该值将被覆盖。

解决方案是为每个键保留一组值。

在您的代码中,而不是:

storeR.put(node, key);

您应该写:

List<String> nodeValues = storeR.get(node);
if (nodeValues == null) {
    nodeValues = new ArrayList<String>();
    storeR.put(node, nodeValues  );
}
nodeValues.add(key);

并且您还应该将storeR类型更改为HashMap<Integer, List<String>>

MultiMap也是类似的解决方案。

Java:我可以在Hashmaps中使用数组吗? - java

我可以在Hashmaps中使用数组吗?如果是这样,则声明这种哈希图的确切语法是什么?谢谢 参考方案 数组也是对象。甚至像int[]这样的原始数组。Map<String,String[]> map = new HashMap<String,String[]>();

HashMap <>错误。类型非法开始 - java

每当我尝试编译此函数时,都会在第10行给出错误->错误消息:CandidateCode.java.10:静态HashMap类型的非法启动hm = new HashMap (); 1个错误我正在尝试在网站的编译器上对其进行编译,但是当我使用netbeans时,它可以正常工作。import java.util.*; public class Candida…

与哪些运算符>>兼容 - java

我这里没有什么代码int b=3; b=b >> 1; System.out.println(b); 它可以完美工作,但是当我将变量b更改为byte,short,float,double时,它包含错误,但是对于变量int和long来说,它可以完美工作,为什么它不能与其他变量一起工作? 参考方案 位移位运算符(例如>>)与任何整数类型兼…

Java中的<<或>>>是什么意思? - java

This question already has answers here: Closed 7 years ago. Possible Duplicate: What does >> and >>> mean in Java?我在一些Java代码中遇到了一些陌生的符号,尽管代码可以正确编译和运行,但对于括号在此代码中的作用却感…

Java:正则表达式模式匹配器是否有大小限制? - java

我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)