簡體   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