我有以下多重映射:如何有效地迭代Multimap?
Multimap<String,Multimap<String,Integer>> map = ArrayListMultimap.create();
我需要重複它,但我堅持。
我應該如何迭代它?
我有以下多重映射:如何有效地迭代Multimap?
Multimap<String,Multimap<String,Integer>> map = ArrayListMultimap.create();
我需要重複它,但我堅持。
我應該如何迭代它?
看起來您正在使用google guava multimap和ArrayListMultimap
類的create method來創建它。
您可以通過多重映射迭代和你內心的多重映射這樣的:
package com.test.java;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
public class Main {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Multimap<String, Multimap<String,Integer>> map = ArrayListMultimap.create();
Multimap<String,Integer> m = ArrayListMultimap.create();
//put some values
m.put("value1", 1);
m.put("value2", 2);
m.put("value3", 3);
map.put("one", m);
for (Object value1 : map.values()) {
for (Object value2 : ((Multimap<String,Integer>)value1).values()) {
System.out.println((Integer)value2);
}
}
}
}
輸出:
2
1
3
注:
如果你想有一個確定性迭代訂單,請使用LinkedListMultimap:
實施例:
LinkedListMultimap<String, LinkedListMultimap<String,Integer>> map = LinkedListMultimap.create();
LinkedListMultimap<String,Integer> m = LinkedListMultimap.create();
//put some values
m.put("value1", 1);
m.put("value2", 2);
m.put("value3", 3);
map.put("one", m);
for (Object value1 : map.values()) {
for (Object value2 : ((LinkedListMultimap<String,Integer>)value1).values()) {
System.out.println((Integer)value2);
}
}
輸出:
1
2
3
謝謝你完美的工作 – crazyforjava
Map<String, Multimap<String>> map = multimap.asMap();
System.out.println("Multimap as a map");
for (Map.Entry<String, Multimap<String>> entry : map.entrySet()) {
String key = entry.getKey();
Multimap<String> value = multimap.get("lower");
System.out.println(key + ":" + value);
}
請試用一下。
我有一個multimap和它的價值作爲一個更多的multimap將解決上述工作? – crazyforjava
是的,你可以嘗試告訴我。 –
迭代如何?你想達到什麼目的?你有什麼嘗試,沒有奏效? – ytg