簡體   English   中英

如何使用java流展平地圖值

[英]How to flatten map values using java streams

我是Java流的新手,手頭有問題。 我有這樣的地圖:

Map<String, List<String>> specialProductsMap

我想將映射值展平為一個集合,該集合包含specialProductsMap中列表中的所有String值。 我如何使用Java Streams執行此操作?

您可以使用flatMap運算符來完成此操作。 這是它的外觀。

Set<String> valueSet = specialProductsMap.values().stream()
    .flatMap(List::stream)
    .collect(Collectors.toSet());

首先從map獲取值列表然后像這樣使用stream api

Set<String> setOfString = specialProductsMap.values().stream().flatMap(list->list.stream())
            .collect(Collectors.toSet());

或者像這樣使用方法參考

Set<String> setOfString = specialProductsMap.values().stream().flatMap(List::stream)
            .collect(Collectors.toSet());

你必須流式傳輸你的價值觀:

Stream<List<String>> myStream = specialProductsMap.values().stream();

然后壓扁它:

Stream<String> myData = myStream.flatMap(List::stream);

然后收集一組:

Set<String> = myData.collect(Collectors.toSet());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM