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