日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 不可修改的map_Java中如何实现不可变Map详解

發布時間:2023/12/20 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 不可修改的map_Java中如何实现不可变Map详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

有時最好不允許修改? java.util.Map, 例如跨線程共享只讀數據。為此,我們可以使用Unmodifiable Map或Immutable Map。

在這個快速教程中,我們將看到它們之間的區別。然后,我們將介紹可以創建不可變Map的各種方法。

下面話不多說了,來一起看看詳細的介紹吧

不可修改與不可變

Unmodifiable Map其實是一個可以修改的map的包裝器,不允許直接修改它。

Map mutableMap = new HashMap<>();

mutableMap.put("USA", "North America");

Map unmodifiableMap = Collections.unmodifiableMap(mutableMap);

assertThrows(UnsupportedOperationException.class,

() -> unmodifiableMap.put("Canada", "North America"));

但是包裝器里面底層的可變Map仍然可以改變,修改也反映在不可修改的Map中:

mutableMap.remove("USA");

assertFalse(unmodifiableMap.containsKey("USA"));

mutableMap.put("Mexico", "North America");

assertTrue(unmodifiableMap.containsKey("Mexico"));

另一方面,不可變Map包含其自己的私有數據,是不允許對其進行修改。因此,一旦創建了不可變Map的實例,數據就不會以任何方式改變。

Guava不變Map

Guava提供了每個java.util的不可變版本。使用? ImmutableMap 映射 。每當我們嘗試修改它時,它都會拋出? UnsupportedOperationException。

由于它包含自己的私有數據,因此在更改原始地圖時,此數據不會更改。

我們現在將討論創建ImmutableMap實例的各種方法? 。

1. 使用copyOf()方法:

首先,讓我們使用ImmutableMap.copyOf()方法,該方法返回原始Map中所有條目的副本:

ImmutableMap immutableMap = ImmutableMap.copyOf(mutableMap);

assertTrue(immutableMap.containsKey("USA"));

它不能直接修改,但是可以改變其內部可變的Map:

assertThrows(UnsupportedOperationException.class,

() -> immutableMap.put("Canada", "North America"));

mutableMap.remove("USA");

assertTrue(immutableMap.containsKey("USA"));

mutableMap.put("Mexico", "North America");

assertFalse(immutableMap.containsKey("Mexico"));

2.使用builder()方法

我們還可以使用?ImmutableMap.builder()方法創建原始Map中所有條目的副本。

此外,我們可以使用此方法添加原始Map中不存在的其他條目:

ImmutableMap immutableMap = ImmutableMap.builder()

.putAll(mutableMap)

.put("Costa Rica", "North America")

.build();

assertTrue(immutableMap.containsKey("USA"));

assertTrue(immutableMap.containsKey("Costa Rica"));

3. 使用of()

最后,我們可以使用ImmutableMap.of()方法創建一個不可變的Map,其中包含動態提供的一組條目。它最多支持五個鍵/值對:

ImmutableMap immutableMap

= ImmutableMap.of("USA", "North America", "Costa Rica", "North America");

assertTrue(immutableMap.containsKey("USA"));

assertTrue(immutableMap.containsKey("Costa Rica"));

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

總結

以上是生活随笔為你收集整理的java 不可修改的map_Java中如何实现不可变Map详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产福利在线播放 | 亚洲国产综合视频 | 免费看黄在线网站 | 91精品又粗又猛又爽 | 国产在线观看免费视频软件 | 97操| 国产午夜一级一片免费播放 | 白丝女仆被免费网站 | 精品亚洲一区二区三区四区五区 | 大肉大捧一进一出好爽动态图 | 欧美日韩国产电影 | 森林影视官网在线观看 | 午夜精品偷拍 | 深夜成人在线 | 丰满少妇高潮久久三区 | 天天综合亚洲 | 人人爽人人插 | 欧美性生活一区二区三区 | 国产成人超碰人人澡人人澡 | 91国产免费观看 | 永久av在线免费观看 | 女人18毛片毛片毛片毛片区二 | 日本免费在线一区 | 免费成人结看片 | 99这里只有 | 欧美一级性生活视频 | 日日人人| 大肉大捧一进一出视频 | 久久免费资源 | 国产视频在线免费观看 | 制服丝袜天堂网 | va在线| 人妻一区二区三区视频 | 精品国产a线一区二区三区东京热 | 777777av | 99re这里只有精品在线观看 | 精品一区二区三区免费毛片爱 | 国产午夜一区二区 | 一区二区三区四区亚洲 | 色鬼综合 | 天天摸天天做天天爽 | 色男人av| 亚洲视频网站在线观看 | 久久久88 | 久久久久久久久99精品 | 欧美顶级黄色大片免费 | 久久久久久蜜桃一区二区 | 五月天六月色 | 小宵虎南在线观看 | 91av观看| 手机在线看片你懂的 | 国产一区二区在线观看视频 | 国产1区| 99热这里只有精品5 国产精品伦子伦免费视频 精品一二三 | 狠狠夜夜 | 国产日韩视频在线观看 | 午夜小视频在线播放 | 香蕉视频国产 | 亚洲伦理自拍 | 99国产精品99久久久久久粉嫩 | 亚洲AV成人精品 | 久久久男人的天堂 | 精品一区二区三区四区视频 | 99久久久久无码国产精品 | 99精品视频免费看 | 涩涩的视频在线观看 | 亚洲女人天堂成人av在线 | 驯服少爷漫画免费观看下拉式漫画 | 蜜臀久久99静品久久久久久 | 亚洲激情在线观看 | 一卡二卡三卡视频 | 奇米影视欧美 | 国产jizz| 毛片网在线观看 | 亚洲清纯国产 | 国内一级视频 | 一本久久a精品一合区久久久 | 日本不卡网| 无码人妻丰满熟妇区毛片蜜桃精品 | 欧美精产国品一二三区 | 国产处女 | 99自拍视频在线观看 | 国产网站黄 | 日韩r级电影在线观看 | 蜜桃久久久久久 | 在线看v片| 欧美夫妻性生活视频 | 一本色道久久加勒比精品 | 日本激情视频一区二区三区 | 毛片视屏| 成人颜色网站 | 国产成人亚洲精品自产在线 | 成人免费在线播放视频 | 性一交一乱一伧国产女士spa | 欧美com | 在线免费观看av不卡 | 中国国产精品 | 亚洲四虎av | 在线欧美激情 |