Java 如何在MultiKeyMap上迭代?
我使用的是commons集合中的MultiKeyMap,它提供了多键值对。我有3个键,它们是字符串。我有两个问题我不知道如何解决 如何迭代所有多键值对?用一个简单的HashMap我就知道了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
第二,如何在前两个键固定的情况下获得所有多键值对?这意味着我想得到像这样的东西
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 }