Collections.unmodifiablemap()和集合,其中读取也会修改

时间:2011-06-10 16:10:22

标签: java collections

这更像是一个好奇心问题。假设我向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);    

    }
     

}

2 个答案:

答案 0 :(得分:5)

地图正在修改自己。 Collections.unmodifiableMap()只为Map提供了一个不允许修改的装饰器,它不会使Map本身无法修改。

答案 1 :(得分:3)

Collections.unmodifiableMap返回一个新的Map,当您尝试使用您作为支持集合传入的现有Map时,会尝试修改异常。它不会改变现有Map的语义。