java - 如何使用流对地图进行深度复制?
问题描述
最简单的方法是循环,但这会很冗长,我更喜欢 Java 8 的更简洁的解决方案。
这个帖子在这里推荐
mapCopy = map.entrySet().stream()
.collect(Collectors.toMap(e -> e.getKey(), e -> List.copyOf(e.getValue())))
用于复制HashMap<Integer, List>
,但我所拥有的是HashMap<String, HashMap<String, Integer>
。我也为列表尝试了上述方法,但出于某种原因,即使 IntelliJ 自动将其预测为有效方法e.getKey()
,e.getValue()
两者都“无法解决”,并e
引用了Map.Entry
我不太擅长使用流,所以我不知道为什么上面的方法不起作用,或者如何完成我想要的。
解决方案
您可以使用HashMap
构造函数为原始Map
.
Map<String, Map<String, Integer>> result = map.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, e -> new HashMap<>(e.getValue())));
推荐阅读
- javascript - 量角器黄瓜框架未识别规范文件
- ms-access - 测试 ODBC 链接表是否可用
- mysql - 在 INSERT INTO 语句中使用 FROM_UNIXTIME
- javascript - SVG.js:referenceError SVG 未定义
- ios - 在不调用每个 viewDidAppear 的情况下解雇 rootViewController
- templates - Thymeleaf 模板的易读性更好
- gstreamer - 在单独的分支中并行处理相同的数据
- c - C 编程递归问题生成段错误
- javascript - 从 DOM 中删除一个元素和从数组中删除一个对象后,IE11 冻结(部分)
- powerbi - Power BI 多对多可视化