2017-05-11 19 views
-1

私は、次のマルチマップを持っている:マルチマップを効率的に反復するには?

Multimap<String,Multimap<String,Integer>> map = ArrayListMultimap.create(); 

私はそれを反復処理する必要がありますが、私はこだわっています。

どのように反復する必要がありますか?

+0

反復どのように?あなたは何を達成しようとしますか?それはうまくいきませんでした。 – ytg

答えて

0

あなたはgoogle guava multimapArrayListMultimapcreate 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 
+0

これは完璧に働いてくれてありがとう – crazyforjava

0
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); 
} 

試してみてください。

+0

私はマルチマップとその価値が1つ以上のマルチマップがゾルの仕事の上になるでしょうか? – crazyforjava

+0

はい、それを教えてもらえますか? –

関連する問題