java - 如何在 java 中通过键-> 集合映射流式传输,其中每个流式元素都是键和集合中的每个元素?

标签 java collections java-8 hashmap java-stream

我正在尝试展平 map 但又不会丢失 key 。

我最想拥有的东西:

Map<K, Collection<V>> keyToValuesMap = ...;
Stream.flattenCollection(keyToValuesMap).forEach((k,v) -> print(k, v));

其中v表示集合中的每个值对应于每个k


等效的老式 java 代码是:

for (Map.Entry<K, Collection<V>> entry : keyToValuesMap.entrySet())
{
    K k = entry.getKey();

    for (V v : entry.getValue())
    {
         print(k, v);
    }
}

请注意,这个问题不同于仅仅流过值,因为 key 丢失了,像这样:keyToValuesMap.entrySet().stream().flatMap(keyValuesEntry -> keyValuesEntry.getValue().stream()).forEach(v -> printJustV(v));

* print 只是该对的示例操作。

* 我在 StreamEx 中搜索了这样的 API , 但找不到一个。我确定我会在那里找到它...

最佳答案

如果没有流,这会更容易/紧凑:

map.forEach((k, v) -> v.forEach(e -> print(k, e)));

关于java - 如何在 java 中通过键-> 集合映射流式传输,其中每个流式元素都是键和集合中的每个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53762474/

相关文章:

java - 如何在 Java 8 中按另一个列表的元素对列表的元素进行分组

java - 遍历列表中另一个对象内的对象列表

java - 将文件上传到谷歌应用程序引擎

java - 如何为 BaseAdapter 中的不同项目制作进度条功能

Java - 按字母顺序和数字对对象数组列表进行排序

javascript - 如何将数组转换为集合

java - Lambda 表达式中方法引用的方法引用

java - JDK ClassLoader.getResourceAsStream 坏了吗? (未关闭的资源)

Java NIO Http 客户端请求与线程池

java正则表达式