我需要一个保持插入顺序的不可变键值结构

时间:2013-02-20 14:54:24

标签: java guava immutability linkedhashmap

我想在Guava库中找到类似ImmutableLinkedHashMap<>的内容。 我需要使用带有插入顺序的不可变键值数据结构。 那么,我该怎么用?

2 个答案:

答案 0 :(得分:29)

我不确定我究竟是在理解你所追求的是什么,但如果它是一个真正不可改变的Map,那么你想看看ImmutableMap

如文档中所述:

  

具有可靠的用户指定迭代顺序的不可变,基于散列的Map。不允许使用null键或值。

     

Collections.unmodifiableMap(java.util.Map<? extends K, ? extends V>)不同,ImmutableMap是可以更改的单独地图的视图,ImmutableMap的实例包含自己的数据并且永远不会更改。 public static final便于Map<Integer, String> m = ImmutableMap.of(5,"Five",6,"Six",7,"Seven"); 地图(“常量地图”),还可让您轻松制作由来电者提供给您班级的地图的“防御性副本”

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

{{1}}

希望这就是你所追求的。

答案 1 :(得分:7)

首先创建一个LinkedHashMap,然后使用ImmutableMap.copyOf(linkedHashMap)创建一个与原始地图具有相同排序的不可变副本。