这更像是一个好奇心问题。假设我向Collections.unmodifiableMap()提供了一个LinkedHashMap,其访问顺序设置为true。因为读取实际上正在修改地图。这是否意味着有些情况下unmodifiableMap()返回的视图实际上是可修改的?
public class MyApp { /** * @param args */ public static void main(String[] args) { Map<String, String> m = new LinkedHashMap<String, String>(16,.75f,true); Collections.unmodifiableMap(m); }
}
答案 0 :(得分:5)
地图正在修改自己。 Collections.unmodifiableMap()
只为Map提供了一个不允许修改的装饰器,它不会使Map本身无法修改。
答案 1 :(得分:3)
Collections.unmodifiableMap
返回一个新的Map,当您尝试使用您作为支持集合传入的现有Map时,会尝试修改异常。它不会改变现有Map的语义。