Colelction.unmodifiableMap是否保护迭代顺序?
我正在尝试newMap.put(key,Collections.ModifiableMap(oldMap)) 然后,当我执行newMap.get(key)并迭代时,迭代顺序似乎发生了变化。
我们如何保护迭代订单?
答案 0 :(得分:5)
UnmodifiableMap只是委托所有方法,除了写一些方法。它的顺序正是代表的顺序。
如果您需要与第一个集合具有相同的顺序,请使用LinkedHashMap。
答案 1 :(得分:4)
结帐Collections.unmodifiableSortedMap。这应该为您提供Map上的只读视图,并维护键的排序顺序。
答案 2 :(得分:1)
如果我们查看Collections.unmodifiableMap的源代码,我们会看到它只是将它传递给一个UnmodifiableMap类,它只是包装它。因此它不会对基础地图的顺序进行任何更改。
根据unmodifiableMap
的文档,它说:
返回一个不可修改的视图 指定地图。
因为它说它返回视图,这意味着我们没有获得不同的地图,只是以不同的方式访问旧地图。