Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在MultiKeyMap上迭代?_Java_Dictionary_Apache Commons Collection_Multikey - Fatal编程技术网

Java 如何在MultiKeyMap上迭代?

Java 如何在MultiKeyMap上迭代?,java,dictionary,apache-commons-collection,multikey,Java,Dictionary,Apache Commons Collection,Multikey,我使用的是commons集合中的MultiKeyMap,它提供了多键值对。我有3个键,它们是字符串。我有两个问题我不知道如何解决 如何迭代所有多键值对?用一个简单的HashMap我就知道了 第二,如何在前两个键固定的情况下获得所有多键值对?这意味着我想得到像这样的东西multiKey.get(“key1”、“key2”)未指定第三个键。对MultiKeyMap的键值进行迭代与哈希映射类似: MultiKeyMap<String, String> multiKeyMap = n

我使用的是commons集合中的MultiKeyMap,它提供了多键值对。我有3个键,它们是字符串。我有两个问题我不知道如何解决

如何迭代所有多键值对?用一个简单的HashMap我就知道了


第二,如何在前两个键固定的情况下获得所有多键值对?这意味着我想得到像这样的东西
multiKey.get(“key1”、“key2”)未指定第三个键。

对MultiKeyMap的键值进行迭代与哈希映射类似:

    MultiKeyMap<String, String> multiKeyMap = new MultiKeyMap();

    multiKeyMap.put( "a1", "b1", "c1", "value1");
    multiKeyMap.put( "a2", "b2", "c2", "value1");

    for(Map.Entry<MultiKey<? extends String>, String> entry: multiKeyMap.entrySet()){
        System.out.println(entry.getKey().getKey(0)
                +" "+entry.getKey().getKey(1)
                +" "+entry.getKey().getKey(2)
                + " value: "+entry.getValue());
    }
MultiKeyMap MultiKeyMap=new MultiKeyMap();
multiKeyMap.put(“a1”、“b1”、“c1”、“value1”);
multiKeyMap.put(“a2”、“b2”、“c2”、“value1”);

对于(Map.Entry我使用的是
commons collections 4.4
版本,它提供了
forEach
方法。它可以如下使用

MultiKeyMap<String,Integer> multiKeyMap=new MultiKeyMap<>();
        multiKeyMap.put("class 9","Div A",30);
        multiKeyMap.put("class 9","Div B",40);
        multiKeyMap.forEach((key,value)->{
            System.out.println(key.getKey(0)+" & "+key.getKey(1)+" -> "+value);
        });

Output:
class 9 & Div A -> 30
class 9 & Div B -> 40
MultiKeyMap MultiKeyMap=new MultiKeyMap();
多键映射。put(“第9类”,“A类”,30);
多键映射。put(“第9类”,“B类”,40);
multiKeyMap.forEach((键,值)->{
System.out.println(key.getKey(0)+“&”+key.getKey(1)+“-->”+value);
});
输出:
9类和A类->30
9类和B类->40

您可以在values()中迭代列表:


我刚刚发现这是一个四年前的问题…

mapIterator()有什么问题吗?
?那么,你有一个hashmap的hashmap吗?我很好奇,如果你在做这个多键设计,你没有做类似于:multiKey.get(“key1:key2”)的事情;因此,字符串
key
实际上是key1和key2连接在一起。@Marvin把你的第一个问题解决了,第二个问题的答案是,你不能进行部分匹配,因为API不支持它:@fallereneaper我有一个appache commons库提供的多键映射。哦,明白了。是的,我从来没有这样做过我以前真的用过那个。我希望能帮上忙-/
MultiKeyMap<String,Integer> multiKeyMap=new MultiKeyMap<>();
        multiKeyMap.put("class 9","Div A",30);
        multiKeyMap.put("class 9","Div B",40);
        multiKeyMap.forEach((key,value)->{
            System.out.println(key.getKey(0)+" & "+key.getKey(1)+" -> "+value);
        });

Output:
class 9 & Div A -> 30
class 9 & Div B -> 40
    for(Object entry: multiKey.values()){ //TODO }