我正在尝试展平 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/