是否等同于
return ImutableMap.copyOf(map);
和
return Collections.unmodifiableMap(new HashMap(map));
return Collections.unmodifiableMap(new LinkedHashMap(map));
第二种方式是线程安全的吗?
(来自Guava的ImutableMap,我尝试第二种方式,因为ImutableMap不支持空值)
两者唯一的区别是,如果未修改的映射被更新,那么它所支持的映射也会被更新。
而不可变映射是真正不可变的。
您创建了一个未修改的映射,它的行为将类似于不可变映射。
Map<String, String> immutableMap =
Collections.unmodifiableMap(new HashMap<String, String>(map));
因为您限制更新,所以两者在意义上都是线程安全的。