我需要一个不可变的键值对结构,它保留插入顺序。

24

我希望在Guava库中寻找类似于ImmutableLinkedHashMap<>的东西。 我需要使用一个不可变的键值数据结构并且保持插入顺序。 那么,我应该使用什么?


2个回答

34

我不确定我完全理解您的意思,但如果您需要一个真正不可变的 Map,您可能需要查看ImmutableMap

如文档所述:

一个不可变的基于哈希的 Map,它具有可靠的用户指定迭代顺序。不允许空键或值。

Collections.unmodifiableMap(java.util.Map<? extends K, ? extends V>) 不同,后者是一个可以仍然更改的单独地图的视图, ImmutableMap 的实例包含其自己的数据并且永远不会更改。ImmutableMap 对于“常量映射”非常方便,并且还允许您轻松地对调用者提供的映射进行“防御性副本”。

例如,您可以以类似的方式使用它:

Map<Integer, String> m = ImmutableMap.of(5,"Five",6,"Six",7,"Seven");

希望这就是你想要的。


是的,我也正要说这个。ImmutableMap 看起来应该可以工作。 - 808sound
问题在于ImmutableSortedMap扩展了ImmutableMap,因此如果您有这种方法的客户端,则无法通过类型强制执行插入顺序维护。 - Max Bileschi

10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接