亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

如何創建和初始化一個HashMap,看似簡單的問題,其實真的挺簡單的,但我們希望從多種方法中,選擇一個最簡潔方便、可讀性也高的方法。

 

代碼塊初始化

可以使用靜態代碼塊和非靜態代碼塊,都可以進行初始化,要針對變量是否是靜態變量來選擇。

private static Map<String, String> map;
{
 map = new HashMap<>();
 map.put("name", "pumpkin");
 map.put("location", "Guangzhou");
}

雙大括號初始化

Map<String, String> map = new HashMap<String, String>() {{
 put("name", "pumpkin");
 put("sex", "M");
}};
assertEquals("pumpkin", map.get("name"));

雖然這是一種可行的辦法,但并不認可這種方法,具體原因可閱讀公眾號之前的文章。

使用JAVA集合工具類Collections

map = Collections.emptyMap();
map = Collections.singletonMap("name", "pumpkin");
assertEquals("pumpkin", map.get("name"));

需要注意的是,這產生的是不可變的Map。

使用Java 8 Stream的方法

map = Stream.of(
 new AbstractMap.SimpleEntry<>("name", "Pumpkin"),
 new AbstractMap.SimpleEntry<>("age", "18"))
 .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
assertEquals("Pumpkin", map.get("name"));

也可以用Stream生成不可變的Map,如下:

map = Stream.of(
 new AbstractMap.SimpleEntry<>("name", "Pumpkin"),
 new AbstractMap.SimpleEntry<>("age", "18"))
 .collect(Collectors.collectingAndThen(
 Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue),
 Collections::unmodifiableMap
 ));

使用Guava庫

Guava庫應該大多數Java開發都知道,它是google開源的類庫,里面有許多非常方便的工具與類。

map = ImmutableMap.of("key1", "value1", "key2", "value2");
map = Maps.newHashMap(map);

以上兩行代碼分別生成不可變的Map和可變的Map。

總結

本文介紹了生成空的Map,只有一個Entry的Map;可變的Map和不可變的Map。大家可根據自己的需求自行選擇。

Java 9對這塊有比較大的改進,有興趣的同學就自行研究吧。

Java必修課】如何創建和初始化一個HashMap?

 

 

分享到:
標簽:Java
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定