如何使用番石榴制作给定地图的不可变地图?
How to make an immutable map given a map using Guava?
给定一个地图,我如何使用 Guava 制作一个不可变的地图?我知道 Collections.unmodifiableMap
的一种方法,但是还有其他使用 Guava 的方法吗?
Map<String, String> realMap = Maps.newHashMap();
realMap.put("A", "B");
// any other alternative?
Map<String, String> unmodifiableMap = Collections.unmodifiableMap(realMap);
我正在用一些条目填充我的 realMap
,然后我需要使它不可变,这样就没有人可以修改它。我只是想看看是否有使用 Guava 的替代方法?我做了一些搜索,但找不到它。
您正在寻找 ImmutableMap.copyOf()
:
ImmutableMap<String, String> immutableMap = ImmutableMap.copyOf(realMap);
请记住,与仅为其参数创建 wrapper 的 unmodifiableMap()
相反,这实际上将其复制到新地图。这可能意味着轻微的性能影响,但也意味着不可能通过 realMap
.
意外修改地图
给定一个地图,我如何使用 Guava 制作一个不可变的地图?我知道 Collections.unmodifiableMap
的一种方法,但是还有其他使用 Guava 的方法吗?
Map<String, String> realMap = Maps.newHashMap();
realMap.put("A", "B");
// any other alternative?
Map<String, String> unmodifiableMap = Collections.unmodifiableMap(realMap);
我正在用一些条目填充我的 realMap
,然后我需要使它不可变,这样就没有人可以修改它。我只是想看看是否有使用 Guava 的替代方法?我做了一些搜索,但找不到它。
您正在寻找 ImmutableMap.copyOf()
:
ImmutableMap<String, String> immutableMap = ImmutableMap.copyOf(realMap);
请记住,与仅为其参数创建 wrapper 的 unmodifiableMap()
相反,这实际上将其复制到新地图。这可能意味着轻微的性能影响,但也意味着不可能通过 realMap
.