java - 如何在 Map.of 工厂中保留插入顺序?
问题描述
Java 9 提供Map.of()
了轻松创建具有固定值的地图的功能。
问题:我想创建一个保留插入顺序的地图,例如LinkedHashMap
. 那家工厂可以吗?至少map.of()
不保留顺序...
解决方案
确实没有工厂方法LinkedHashMap::of
,并且 aMap
本身没有订单,所以我认为它的唯一方法是构建 aLinkedHashMap
如果你真的需要一个。
顺便说一句,来自JEP 本身:
具体集合类(例如,ArrayList、HashSet)上的静态工厂方法已从该提案中删除...
还有一个问题,就是类上的静态方法是由子类继承的。假设要添加一个静态工厂方法 HashMap.of()。由于 LinkedHashMap 是 HashMap 的子类,因此应用程序代码可以调用 LinkedHashMap.of()。这最终会调用 HashMap.of(),这完全不是人们所期望的!
这里的要点是static
方法是继承的,但不可覆盖,因此如果将这样的方法添加到HashMap
它可能不会在LinkedHashMap
.
如果可以使用guava
,则可以使用ImmutableMap
记录为:
一个不可变的、基于哈希的 Map 具有可靠的用户指定的迭代顺序......
推荐阅读
- r - ggalluvial 为每个节点分配不同的颜色
- java - Camel 属性占位符布尔值
- markdown - 将 Markdown 转换为 RTF 并保留标题?
- node.js - 使用 Cloud Functions 将复杂的 Json 写入 Cloud Firestore 的语法?
- asp.net - getexternallogininfo 在没有 MVC 的简单 asp.net 中的方法上返回 null
- video - 在运动补偿技术中,发送方是否可以只发送有关运动的信息?
- node.js - React 和 axios 的 ERR_CONNECTION_REFUSED
- node.js - 计算所有匹配文档中的字段总和 - MongoDB - Mongoose
- socket.io - 构建失败并出现解决错误
- javascript - 在程序编译期间雪花去除反斜杠?