[英]How to collect a map key-value into a list
给出以下地图声明
Map<Integer, Integer> map;
我想使用单个流将所有键和所有值一起收集到一个List<Integer>
中,该流只迭代地图的条目一次。
到目前为止,我只使用两个独立的流迭代设法做到了这一点; 一个用于键,一个用于值。
可以一次完成吗?
尝试这个:
List<Integer> numbers = map.entrySet().stream()
.flatMap(e -> Stream.of(e.getKey(), e.getValue()))
.collect(Collectors.toList());
Map.entrySet().stream().flatMap(...)
应该为你做。 每个Entry
都有getKey()
和getValue()
,所以你应该能够将它们组成flatMap
lambda中的2长度流,然后用列表收集器将它们全部包装起来。
或者,查看使用.entrySet().reduce()
按元素构建列表元素。
假设你有一个函数Integer t(K key, V value)
,
map.entrySet()
.stream()
.map(entry -> t(entry.key, entry.value))
.collect(Collectors.toList());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.