如何有效地迭代Multimap?

时间:2017-05-11 15:34:20

标签: java

我有以下多图:

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

我需要迭代它,但我被卡住了。

我应该如何重复它?

3 个答案:

答案 0 :(得分: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);
}

请试一试。

答案 1 :(得分:0)

您似乎正在使用google guava multimap和类create methodArrayListMultimap来创建它。

您可以像这样遍历多图和内部多图:

  List<Institucion> findAllBySectorSectorId(Long id);

<强>输出:

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

}

注意:

如果您想要确定性的迭代顺序,请使用LinkedListMultimap

示例:

2
1
3

<强>输出:

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

答案 2 :(得分:0)

我的例子

        ListMultimap<Long, Long> items = elasticResult.getResult();

        for (Long key : items.keySet()) {
            items.get(key).forEach(value -> {
                  // ... use key and value
            });
        }