Java 番石榴套袋

Java 番石榴套袋,java,guava,Java,Guava,假设我有以下地图定义: Map<String, List<Set<Integer>>> map = Maps.newHashMap(); map.put("a", Arrays.asList(Sets.newHashSet(1, 2, 3), Sets.newHashSet(4, 5))); Map Map=Maps.newHashMap(); map.put(“a”,Arrays.asList(set.newHashSet(1,2,3),set.newHa

假设我有以下地图定义:

Map<String, List<Set<Integer>>> map = Maps.newHashMap();
map.put("a", Arrays.asList(Sets.newHashSet(1, 2, 3), Sets.newHashSet(4, 5)));
Map Map=Maps.newHashMap();
map.put(“a”,Arrays.asList(set.newHashSet(1,2,3),set.newHashSet(4,5));
我创建地图的不可变副本,如下所示:

ImmutableMap<String, List<Set<Integer>>> immutableMap = ImmutableMap.copyOf(map);
ImmutableMap-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
只使嵌套的不可变集合具有一级深度?

否,这是因为
数组#asList(Object…
返回一个固定大小的
列表,即不能从中添加或删除元素

javadoc声明

返回一个不可变映射,该映射包含与映射相同的条目


因此,带有键
“a”
的条目的值是
数组#asList(Object…
返回的
列表

否,这是因为
数组#asList(Object…
返回一个固定大小的
列表
,即不能从中添加或删除元素

javadoc声明

返回一个不可变映射,该映射包含与映射相同的条目

因此,带有键
“a”
的条目的值是
数组#asList(Object…
返回的
列表