我正在使用提供多键值对的commons-collections中的multikeyMap.我有3个键是字符串.我有两个问题,我看不出如何解决.
如何迭代所有多键值对?使用简单的HashMap,我知道它.
其次,如何修复前两个键的所有多键值对?这意味着我想得到像这样的东西multikey.get(“key1”,“key2”,?);未指定第三个键的位置.
最佳答案
迭代multikeyMap的键值类似于哈希映射:
multikeyMapmultikeyMap = 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 Setmultikey extends String>,String>> match2Keys(String first,String second,multikeyMapmultikeyMap) {
Setmultikey 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;
}