如何解决Java Stream将具有列表值的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,3,4,6,7,9
包含display: flex,flex-direction,align-items: flex-end,margin-bottom: 0px
个元素。
解决方法
您可以流式传输值并使用flatMap()
创建一个流,该流是每个List的流的串联:
List<Integer> allnumbers = numbersMap.values().stream()
.flatMap(List::stream) // secret sauce
.collect(toList());
,
使用flatMap合并每个列表的流:
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<Integer> output = numbersMap.values()
.stream()
.flatMap(list -> list.stream())
.collect(Collectors.toList());
System.out.println(output);
输出为:
[1,3,4,6,7,9]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。