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

Ole*_*rov 21 java immutability linkedhashmap guava

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

mdm*_*mdm 29

我不确定我究竟是在理解你的目标,但如果它真的是一成不变的Map,那你就想看看ImmutableMap

如文档中所述:

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

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");
Run Code Online (Sandbox Code Playgroud)

希望这是你所追求的.


dog*_*ane 7

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

  • 何必?`ImmutableMap`已经使用了插入顺序. (24认同)