java hashmap
hashmap 是一個散列表,它存儲的內容是鍵值對(key-value)映射。
hashmap 實現了 map 接口,根據鍵的 hashcode 值存儲數據,具有很快的訪問速度,鍵允許為 null,不支持線程同步。
hashmap 繼承于abstractmap,實現了 map、cloneable、java.io.serializable 接口。
hashmap 的 key 與 value 類型可以相同也可以不同,可以是字符串(string)類型的 key 和 value,也可以是整型(integer)的 key 和字符串(string)類型的 value。
hashmap 中的元素實際上是對象,一些常見的基本類型可以使用它的包裝類。
基本類型對應的包裝類表如下:
基本類型 | 引用類型 |
---|---|
boolean | boolean |
byte | byte |
short | short |
int | integer |
long | long |
float | float |
double | double |
char | character |
hashmap 類位于 java.util 包中,使用前需要引入它,語法格式如下:
import java.util.hashmap; // 引入 hashmap 類
以下范例我們創建一個 hashmap 對象 sites, 整型(integer)的 key 和字符串(string)類型的 value:
hashmap<integer, string> sites = new hashmap<integer, string>();
1. 添加元素
hashmap 類提供類很多有用的方法,添加鍵值對(key-value)可以使用 put() 方法:
// 引入 hashmap 類 import java.util.hashmap; public class yapftest { public static void main(string[] args) { // 創建 hashmap 對象 sites hashmap sites = new hashmap(); // 添加鍵值對 sites.put(1, "google"); sites.put(2, "yapf"); sites.put(3, "taobao"); sites.put(4, "zhihu"); system.out.println(sites); } }
執行以上代碼,輸出結果如下:
{1=google, 2=yapf, 3=taobao, 4=zhihu}
以下范例創建一個字符串(string)類型的 key 和字符串(string)類型的 value:
// 引入 hashmap 類 import java.util.hashmap; public class yapftest { public static void main(string[] args) { // 創建 hashmap 對象 sites hashmap sites = new hashmap(); // 添加鍵值對 sites.put("one", "google"); sites.put("two", "yapf"); sites.put("three", "taobao"); sites.put("four", "zhihu"); system.out.println(sites); } }
執行以上代碼,輸出結果如下:
{four=zhihu, one=google, two=yapf, three=taobao}
2. 訪問元素
我們可以使用 get(key) 方法來獲取 key 對應的 value:
// 引入 hashmap 類 import java.util.hashmap; public class yapftest { public static void main(string[] args) { // 創建 hashmap 對象 sites hashmap sites = new hashmap(); // 添加鍵值對 sites.put(1, "google"); sites.put(2, "yapf"); sites.put(3, "taobao"); sites.put(4, "zhihu"); system.out.println(sites.get(3)); } }
執行以上代碼,輸出結果如下:
taobao
3. 刪除元素
我們可以使用 remove(key) 方法來刪除 key 對應的鍵值對(key-value):
// 引入 hashmap 類 import java.util.hashmap; public class yapftest { public static void main(string[] args) { // 創建 hashmap 對象 sites hashmap sites = new hashmap(); // 添加鍵值對 sites.put(1, "google"); sites.put(2, "yapf"); sites.put(3, "taobao"); sites.put(4, "zhihu"); sites.remove(4); system.out.println(sites); } }
執行以上代碼,輸出結果如下:
{1=google, 2=yapf, 3=taobao}
刪除所有鍵值對(key-value)可以使用 clear 方法:
// 引入 hashmap 類 import java.util.hashmap; public class yapftest { public static void main(string[] args) { // 創建 hashmap 對象 sites hashmap sites = new hashmap(); // 添加鍵值對 sites.put(1, "google"); sites.put(2, "yapf"); sites.put(3, "taobao"); sites.put(4, "zhihu"); sites.clear(); system.out.println(sites); } }
執行以上代碼,輸出結果如下:
{}
4. 計算大小
如果要計算 hashmap 中的元素數量可以使用 size() 方法:
// 引入 hashmap 類 import java.util.hashmap; public class yapftest { public static void main(string[] args) { // 創建 hashmap 對象 sites hashmap sites = new hashmap(); // 添加鍵值對 sites.put(1, "google"); sites.put(2, "yapf"); sites.put(3, "taobao"); sites.put(4, "zhihu"); system.out.println(sites.size()); } }
執行以上代碼,輸出結果如下:
4
5. 迭代 hashmap
可以使用 for-each 來迭代 hashmap 中的元素。
如果你只想獲取 key,可以使用 keyset() 方法,然后可以通過 get(key) 獲取對應的 value,如果你只想獲取 value,可以使用 values() 方法。
// 引入 hashmap 類 import java.util.hashmap; public class yapftest { public static void main(string[] args) { // 創建 hashmap 對象 sites hashmap sites = new hashmap(); // 添加鍵值對 sites.put(1, "google"); sites.put(2, "yapf"); sites.put(3, "taobao"); sites.put(4, "zhihu"); // 輸出 key 和 value for (integer i : sites.keyset()) { system.out.println("key: " + i + " value: " + sites.get(i)); } // 返回所有 value 值 for(string value: sites.values()) { // 輸出每一個value system.out.print(value + ", "); } } }
執行以上代碼,輸出結果如下:
key: 1 value: google key: 2 value: yapf key: 3 value: taobao key: 4 value: zhihu google, yapf, taobao, zhihu,
6. java hashmap 方法
hashmapjava hashmap 常用方法列表如下:
方法 | 描述 |
---|---|
clear() | 刪除 hashmap 中的所有鍵/值對 |
clone() | 復制一份 hashmap |
isempty() | 判斷 hashmap 是否為空 |
size() | 計算 hashmap 中鍵/值對的數量 |
put() | 將鍵/值對添加到 hashmap 中 |
putall() | 將所有鍵/值對添加到 hashmap 中 |
putifabsent() | 如果 hashmap 中不存在指定的鍵,則將指定的鍵/值對插入到 hashmap 中。 |
remove() | 刪除 hashmap 中指定鍵 key 的映射關系 |
containskey() | 檢查 hashmap 中是否存在指定的 key 對應的映射關系。 |
containsvalue() | 檢查 hashmap 中是否存在指定的 value 對應的映射關系。 |
replace() | 替換 hashmap 中是指定的 key 對應的 value。 |
replaceall() | 將 hashmap 中的所有映射關系替換成給定的函數所執行的結果。 |
get() | 獲取指定 key 對應對 value |
getordefault() | 獲取指定 key 對應對 value,如果找不到 key ,則返回設置的默認值 |
foreach() | 對 hashmap 中的每個映射執行指定的操作。 |
entryset() | 返回 hashmap 中所有映射項的集合集合視圖。 |
keyset() | 返回 hashmap 中所有 key 組成的集合視圖。 |
values() | 返回 hashmap 中存在的所有 value 值。 |
merge() | 添加鍵值對到 hashmap 中 |
compute() | 對 hashmap 中指定 key 的值進行重新計算 |
computeifabsent() | 對 hashmap 中指定 key 的值進行重新計算,如果不存在這個 key,則添加到 hasmap 中 |
computeifpresent() | 對 hashmap 中指定 key 的值進行重新計算,前提是該 key 存在于 hashmap 中。 |