私は、次のマルチマップを持っている:マルチマップを効率的に反復するには?
Multimap<String,Multimap<String,Integer>> map = ArrayListMultimap.create();
私はそれを反復処理する必要がありますが、私はこだわっています。
どのように反復する必要がありますか?
私は、次のマルチマップを持っている:マルチマップを効率的に反復するには?
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);
}
試してみてください。
私はマルチマップとその価値が1つ以上のマルチマップがゾルの仕事の上になるでしょうか? – crazyforjava
はい、それを教えてもらえますか? –
反復どのように?あなたは何を達成しようとしますか?それはうまくいきませんでした。 – ytg