繁体   English   中英

Guava copyOf嵌套集合

[英]Guava copyOf nested collections

假设我有以下Map定义:

Map<String, List<Set<Integer>>> map = Maps.newHashMap();
map.put("a", Arrays.asList(Sets.newHashSet(1, 2, 3), Sets.newHashSet(4, 5)));

我创建地图的不变副本,如下所示:

ImmutableMap<String, List<Set<Integer>>> immutableMap = ImmutableMap.copyOf(map);

如果我调用immutableMap.get("a").add(Sets.newHashSet(4)); 我收到一个错误,指示嵌套列表在复制的集合中也是不可变的。 但是,如果调用了immutableMap.get("a").get(1).add(6); 可以执行,如果我打印输出结果,我将得到:

{a=[[1, 2, 3], [4, 5, 6]]}

这是否意味着copyOf仅使嵌套的不可变集合copyOf

不,这是因为Arrays#asList(Object...)返回一个固定大小的List ,即。 无法从中添加或删除元素。

ImmutableMap#copyOf(..) javadoc状态

返回一个不变的地图,其中包含与地图相同的条目。

因此,键为"a"的条目的值是Arrays#asList(Object...)返回的List

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM