小智 5
我相信您正在寻找的是LinkedHashMap。链接Hashmap类似于保留插入顺序的常规HashMap。
如不可修改的视图集合中所讨论的,创建一个LinkedHashMap,并调用 到。Collections.umodifiableMap
Map.of 不可修改的静态工厂映射方法Map使用的实现Map.of清楚地记录在 Javadoc 中。要点之一清楚地表明键没有排序:
不可修改的地图
…
映射的迭代顺序未指定并且可能会发生变化。
…
所以你必须使用Mapif 需要排序的另一个实现。
SortedMap“保留顺序”是指排序顺序吗?
Java 包含SortedMap用于定义Map实现行为的接口,这些实现在其所有键之间保持总排序。
Java 捆绑了两个这样的实现:TreeMap和ConcurrentSkipListMap.
您的问题不清楚,但我想您所说的“保留顺序”是指您希望密钥按照添加到地图的顺序进行维护。LinkedHashMap就是这样做的,正如randypaq13在正确答案中提到的那样。
引用 Javadoc:
... 可预测的迭代顺序 ...
... 维护一个双向链表,贯穿其所有条目。这个链表定义了迭代顺序,这通常是键被插入到映射中的顺序(插入顺序)。请注意,如果将键重新插入到映射中,则插入顺序不会受到影响。
在LinkedHashMap满足了您的原始插入订单需求,但不是你为是不可修改的必要。为此,请使用Collections该类及其实用程序方法unmodifiableMap。
Map< String , String > map = new LinkedHashMap<>() ;
map.put( "this" , "that" ) ;
map.put( "other" , "thing" ) ;
Map< String , String > unmodMap = Collections.unmodifiableMap( map ) ;
Run Code Online (Sandbox Code Playgroud)
请务必研究有关不可修改视图集合的文档以了解其行为。点击放大。
下表概述了Map与 Java 11 捆绑的所有实现。
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |