有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (6) 个答案

  1. # 1 楼答案

    标准Java HashMap不能为每个键存储多个值,您添加的任何新条目都将覆盖上一个条目

  2. # 2 楼答案

    有库可以做到这一点,但最简单的纯Java方法是创建MapList,如下所示:

    Map<Object,ArrayList<Object>> multiMap = new HashMap<>();
    
  3. # 3 楼答案

    听起来你在找一个multimapGuava有各种^{}实现,通常通过^{}类创建

    我建议,使用该实现可能比滚动自己的实现、确定API应该是什么样子、在添加值时仔细检查现有列表等更简单。如果您的情况特别厌恶第三方库,那么这样做可能是值得的,但除此之外,Guava是一个极好的库,它可能也会在其他代码方面帮助您:)

  4. # 4 楼答案

    例如:

    Map<Object,Pair<Integer,String>> multiMap = new HashMap<Object,Pair<Integer,String>>();
    

    其中Pair是一个参数类

    public class Pair<A, B> {
        A first = null;
        B second = null;
    
        Pair(A first, B second) {
            this.first = first;
            this.second = second;
        }
    
        public A getFirst() {
            return first;
        }
    
        public void setFirst(A first) {
            this.first = first;
        }
    
        public B getSecond() {
            return second;
        }
    
        public void setSecond(B second) {
            this.second = second;
        }
    
    }
    
  5. # 5 楼答案

    你有这样的东西吗

    HashMap<String, ArrayList<String>>
    

    如果是这样,您可以遍历ArrayList并使用ArrayList获取您喜欢的项。得到(我)

  6. # 6 楼答案

    这是我在一个类似问题的answer中发现的

    Map<String, List<String>> hm = new HashMap<String, List<String>>();
    List<String> values = new ArrayList<String>();
    values.add("Value 1");
    values.add("Value 2");
    hm.put("Key1", values);
    
    // to get the arraylist
    System.out.println(hm.get("key1"));
    

    结果:[值1,值2]