如何解决如何将地图列表转换为地图
我有一张地图列表(Map
List<Map<Long,Long>> listMap = List.of(
Map.of(10L,11L),Map.of(20L,21L),Map.of(30L,31L));
我想将其转换为Map
Map<Long,Long> newMap = Map.of(
10L,11L,20L,21L,30L,31L);
这是我的解决方案-增强了循环功能。
Map<Long,Long> newMap = new HashMap<>();
for (Map<Long,Long> map : listMap) {
Long key = (Long) map.keySet().toArray()[0];
newMap.put(key,map.get(key));
}
有没有更好的方法?我可以使用Java流进行这种转换吗?
注意:密钥是唯一的-不能重复。
解决方法
您可以flatMap
展平每个地图的列表条目,并使用Collectors.toMap
Map<Long,Long> newMap =
listMap.stream()
.flatMap(m -> m.entrySet().stream())
.collect(Collectors.toMap(e -> e.getKey(),e -> e.getValue()));
,
足够简单。获取基础地图的所有条目的流,并使用Collectors.toMap
Map<Long,Long> newMap = listMap.stream()
.flatMap(map -> map.entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue));
如果有重复的密钥(您说不会存在),它将抛出
java.lang.IllegalStateException: Duplicate key <thekey>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。