簡體   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