gpt4 book ai didi

java - Guava copyOf 嵌套集合

转载 作者:行者123 更新时间:2023-12-01 22:31:39 24 4
gpt4 key购买 nike

假设我有以下 map 定义:

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

我创建了 map 的不可变副本,如下所示:

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只使嵌套的不可变集合深一层?

最佳答案

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

ImmutableMap#copyOf(..) javadoc 指出

Returns an immutable map containing the same entries as map.

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

关于java - Guava copyOf 嵌套集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27652091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com