gpt4 book ai didi

java - 如何保留 Map.of 工厂中的插入顺序?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:14:56 25 4
gpt4 key购买 nike

Java 9 提供了 Map.of() 功能来轻松创建具有固定值的 map 。

问题:我想创建一个保留插入顺序的映射,如 LinkedHashMap。那家工厂可以吗?至少 map.of() 不保留顺序...

最佳答案

确实没有像 LinkedHashMap::of 这样的工厂方法,而且 Map 本身没有顺序,所以我看到它的唯一方式就是构建一个 LinkedHashMap 如果你真的需要一个。

顺便说一下,来自 the JEP itself :

Static factory methods on concrete collection classes (e.g., ArrayList, HashSet) have been removed from this proposal ...

There is another wrinkle, which is that static methods on classes are inherited by subclasses. Suppose a static factory method HashMap.of() were to be added. Since LinkedHashMap is a subclass of HashMap, it would be possible for application code to call LinkedHashMap.of(). This would end up calling HashMap.of(), not at all what one would expect!

这里的要点是 static 方法是继承的,但不可覆盖,因此如果这样的方法被添加到 HashMap 中,它就不会在 中被覆盖>LinkedHashMap.

如果您可以使用 guava,则可以使用记录如下的 ImmutableMap:

An immutable, hash-based Map with reliable user-specified iteration order...

关于java - 如何保留 Map.of 工厂中的插入顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52254569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com