提问者:小点点

ImmutableMap和unmodifiableMap与HashMap/linkedhashmap等价吗?


是否等同于

return ImutableMap.copyOf(map);

return Collections.unmodifiableMap(new HashMap(map));
return Collections.unmodifiableMap(new LinkedHashMap(map));

第二种方式是线程安全的吗?

(来自Guava的ImutableMap,我尝试第二种方式,因为ImutableMap不支持空值)


共1个答案

匿名用户

两者唯一的区别是,如果未修改的映射被更新,那么它所支持的映射也会被更新。

而不可变映射是真正不可变的。

您创建了一个未修改的映射,它的行为将类似于不可变映射。

Map<String, String> immutableMap = 
Collections.unmodifiableMap(new HashMap<String, String>(map)); 

因为您限制更新,所以两者在意义上都是线程安全的。