我正在使用来自公共集合的MultiKeyMap,它提供多键值对。我有三个键是字符串。我有两个问题,我不知道如何解决。
如何在所有多键值对上迭代?用一个简单的HashMap,我就知道了。
第二,如何得到所有的多键值对与前两个键固定?这意味着我希望得到类似于这个multiKey.get("key1","key2",?);
的东西,其中没有指定第三个键。
发布于 2016-02-12 22:12:04
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());
}
对于第二个请求,您可以根据前面的迭代编写自己的方法。
public static Set<Map.Entry<MultiKey<? extends String>, String>> match2Keys(String first, String second,
MultiKeyMap<String, String> multiKeyMap) {
Set<Map.Entry<MultiKey<? extends String>, String>> set = new HashSet<>();
for (Map.Entry<MultiKey<? extends String>, String> entry : multiKeyMap.entrySet()) {
if (first.equals(entry.getKey().getKey(0))
&& second.equals(entry.getKey().getKey(1))) {
set.add(entry);
}
}
return set;
}
发布于 2020-04-29 10:03:49
我使用的是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
发布于 2020-05-15 10:33:59
可以在value()中迭代列表:
for(Object entry: multiKey.values()){ //TODO }
我刚发现这是一个四年前的问题..。
https://stackoverflow.com/questions/35372673
复制相似问题