在java 8中将地图映射转换为单个值列表[关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在java 8中将地图映射转换为单个值列表[关闭]相关的知识,希望对你有一定的参考价值。
我有一张地图地图:
Map<Integer,Map<String,Integer>>
我需要将此地图展平为值列表:
Map<String,Integer> map1 = new HashMap<>();
Map<String,Integer> map2 = new HashMap<>();
map1.putIfAbsent("ABC",123);
map1.putIfAbsent("PQR",345);
map1.putIfAbsent("XYZ",567);
map2.putIfAbsent("ABC",234);
map2.putIfAbsent("FGH",789);
map2.putIfAbsent("BNM",890);
Map<Integer,Map<String,Integer>> mapMap = new HashMap();
mapMap.putIfAbsent(0,map1);
mapMap.putIfAbsent(1,map2);
预期产量:123
345
567
234
789
890
我需要不同的解决方案,包括java 8流!!
谢谢
答案
您可以使用以下方法收集所有数字值
List<Integer> numbers = mapMap
.values() //all `Map` values
.stream()
.map(Map::values) //map each inner map to the collection of its value
.flatMap(Collection::stream) // flatten all inner value collections
.collect(Collectors.toList()); //collect all values into a single list
numbers
在上面的代码中包含[345, 123, 567, 890, 234, 789]
另一答案
试试这个
List<Integer> result= new ArrayList<>();
mapMap.forEach((key, value) -> result.addAll(value.values()));
以上是关于在java 8中将地图映射转换为单个值列表[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
通过流将带有列表的列表对象转换为Java 8中的映射[重复]