5
我正在使用提供多鍵值對的公共集合中的MultiKeyMap。我有3個鍵是絃樂。我有兩個問題,我不知道如何解決。如何遍歷MultiKeyMap?
如何迭代所有多鍵值對?用一個簡單的HashMap我知道它。
其次,我怎樣才能得到固定的前兩個鍵的所有多鍵值對?這意味着我想得到像這樣的東西multiKey.get("key1","key2",?);
沒有指定第三個鍵。
我正在使用提供多鍵值對的公共集合中的MultiKeyMap。我有3個鍵是絃樂。我有兩個問題,我不知道如何解決。如何遍歷MultiKeyMap?
如何迭代所有多鍵值對?用一個簡單的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());
}
對於你的第二個要求,您可以根據前一次迭代寫你自己的方法。
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;
}
第一部分不爲我編譯。 –
'mapIterator()'有什麼問題? – Marvin
那麼,你有hashmaps的散列表嗎?我很好奇,如果你正在做這種多鍵設計,你沒有做這樣的事情:multiKey.get(「key1:key2」);這樣,字符串'key'實際上是key1和key2連接在一起的。 – Fallenreaper
@Marvin指出你的第一個問題,第二個問題的答案是你不能進行部分匹配,因爲它不被API支持:https://commons.apache.org/proper/commons-collections/apidocs/org/ apache/commons/collections4/map/MultiKeyMap.html#decorated() – alfasin