HashMap 是 Java 中用來儲存 key-value 資料的資料型別,與 Python 中的 dict 比較相近,內部存許的資料是無序的,且具有很快的訪問速度。
跟 ArrayList 相同,HashMap 不支援 Primitive Data Types 作為元素,需要使用 Wrapper Class 才可以作宣告。
// 創建一個 HashMap,Key 為 int Value 為 String
HashMap<Integer, String> items = new HashMap<Integer, String>();
在 HashMap 中,Key 並不限制為 String,這是與 Json 格式的主要差異。添加元素的方式可以使用 put(key, value),並用 get(key) 取得指定 key 的 value。
// 新增元素 put(key, value)
items.put(1, "apple");
items.put(2, "banana");
items.put(3, "cherry");
System.out.println(items);
// Out: {1=apple, 2=banana, 3=cherry}
// 訪問元素 get(key)
System.out.println(items.get(3));
// Out: cherry
HashMap 在刪除元素時,可以使用 remove(key),但比較特別的是 remove() 的返回值會是被刪除 key 所對應的 value,這部分比較接近 Python dict 的 pop()。
// remove(key)
String eat = items.remove(2);
System.out.println(eat);
// Out: banana
HashMap 也支援以 keySet() 取得全部的 key 值,以及以 values() 取得全部 values。
HashMap.keySet() 或 HashMap.values() 的返回值可以指派給 Set<element>,但不可以給 Array等有序的資料類別。
System.out.println(items.keySet());
// Out: [1, 2, 3]
System.out.println(items.values());
// Out: [apple, banana, cherry]