java - 在 Multimap 内循环 Multimap

标签 java dictionary java-8 java-stream multimap

我在 Multimap 中创建了 Integer 和 Multimap,并且尝试循环获取键和值。然而,对于 Multimap,它以数组形式返回,我无法删除该数组并仅获取 int。

这是我的代码

public static void main(String[] args) throws ParseException {

    Multimap<Integer, Integer> linkedHashMap3 = LinkedListMultimap.create();
    linkedHashMap3.put(1, 2);

    Multimap<Integer, Multimap<Integer, Integer>> linkedHashMap2 = LinkedListMultimap.create();
    linkedHashMap2.put(3, linkedHashMap3);

    for (Entry<Integer, Multimap<Integer, Integer>> st : linkedHashMap2.entries()) {

        System.out.println(st.getValue().keySet());//1
        System.out.println(st.getValue().values());//2
        System.out.println(st.getKey());//2
    }
}

现在的结果

 [1]
 [2]
   3

但我希望结果是:

 1
 2
 3

最佳答案

你可以flatMap它:

st.values().stream()
    .flatMap(innerMap -> innerMap.values().stream())
    .collect(Collectors.toList());

关于java - 在 Multimap 内循环 Multimap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58434696/

相关文章:

python - python中嵌套字典的换行代码

c# - 如何在 C# 中比较字典列表的相等性

java - 命令模式如何被 lambda 表达式取代?

java - 如何通过 Jackson 的 JsonGenerator 编写原始 JSON?

java - 如何使用Spring StandardPasswordEncode和Get Salt Generate?

java - 在 XML/DOM 对象中通过属性值或文本节点表示 ‘conditions’

python - tf.keras.Model类~自变量性能

java-8 - 无法从 TemporalAccessor : 2016-12-15T15:58:03Z of type java. time.Instant 获取 OffsetDateTime

Java 8 收集器 API

java - 什么是 "Java Bean"?