繁体   English   中英

如何将映射键值收集到列表中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM