作者:fly-fox | 来源:互联网 | 2022-12-05 12:19
Java 9提供Map.of()
了轻松创建具有固定值的地图的功能.
问题:我想创建一个保留插入顺序的地图LinkedHashMap
.这个工厂有可能吗?至少map.of()
不保存订单......
1> Eugene..:
LinkedHashMap::of
确实没有类似的工厂方法,而且Map
本身没有订单,所以我看到它的唯一方法是构建一个LinkedHashMap
如果你真的需要一个.
顺便说一下JEP本身:
具体集合类(例如,ArrayList,HashSet)上的静态工厂方法已从此提案中删除...
还有另一个问题,就是类的静态方法是由子类继承的.假设要添加静态工厂方法HashMap.of().由于LinkedHashMap是HashMap的子类,因此应用程序代码可以调用LinkedHashMap.of().这最终会调用HashMap.of(),而不是人们所期望的!
这里指出static
方法是继承的,但不是可HashMap
覆盖的,因此如果添加了这样的方法,则可能没有被覆盖LinkedHashMap
.
如果可以使用guava
,可以使用ImmutableMap
记录为:
基于哈希的不可变Map,具有可靠的用户指定迭代顺序......