我是 Java 流的新手,手頭有問題。我有一張這樣的地圖:Map<String, List<String>> specialProductsMap我想將映射值展平為一個(gè)集合,該集合包含specialProductsMap. 我如何使用 Java Streams 執(zhí)行此操作?
3 回答

心有法竹
TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以使用flatMap
操作員來完成這件事。這是它的樣子。
Set<String> valueSet = specialProductsMap.values().stream() .flatMap(List::stream) .collect(Collectors.toSet());

波斯汪
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
首先從地圖中獲取值列表,然后像這樣使用流 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());

PIPIONE
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
您必須流傳您的價(jià)值觀:
Stream<List<String>> myStream = specialProductsMap.values().stream();
然后壓平它:
Stream<String> myData = myStream.flatMap(List::stream);
然后收集在一個(gè)集合中:
Set<String> = myData.collect(Collectors.toSet());
添加回答
舉報(bào)
0/150
提交
取消