5

Colelction.unmodifiableMap 是否保护迭代顺序?

我正在尝试 newMap.put(key,Collections.ModifiableMap(oldMap)) 然后当我执行 newMap.get(key) 并进行迭代时,迭代顺序似乎发生了变化。

我们如何保护迭代顺序?

4

3 回答 3

5

UnmodifiableMap 简单地委托所有方法,除了编写方法。它的顺序正是代表的顺序。

如果您需要与第一个集合具有相同的顺序,请使用 LinkedHashMap。

于 2011-03-04T01:06:30.780 回答
4

查看Collections.unmodifiableSortedMap。这应该为您提供 Map 上的只读视图并保持键的排序顺序。

于 2011-03-04T03:16:29.797 回答
1

如果我们查看Collections.unmodifiableMap的源代码,我们会发现它只是将它传递给 UnmodifiableMap 类,后者只是将它包装起来。所以它不会改变底层地图的顺序。

根据它的文档,unmodifiableMap它说:

返回指定地图的不可修改视图。

因为它说它返回一个视图,这意味着我们没有得到不同的地图,只是访问旧地图的不同方式。

于 2011-03-04T03:22:44.820 回答