首页 > 解决方案 > Java Stream 将带有 List 值的 Map 转换为一个大列表

问题描述

我有一个Map这样的:

Map<String, List<Integer>> numbersMap = new HashMap<>();
numbersMap.put("A", Arrays.asList(1,2,3));
numbersMap.put("B", Arrays.asList(4,5,6));
numbersMap.put("C", Arrays.asList(7,8, 9));

我该如何List摆脱它?

List<Integer> allnumbers = //?

包含1, 2, 3, 4, 5, 6, 7, 8, 9元素。

标签: javajava-8java-stream

解决方案


您将值流式传输并用于flatMap()创建一个流,该流是每个 List 的流的串联:

List<Integer> allnumbers = numbersMap.values().stream()
   .flatMap(List::stream) // secret sauce
   .collect(toList());

推荐阅读