見書P261
引入
將“關鍵字”簡稱為“鍵”。透過Map介面可以實現儲存“鍵/值”的對映關係。
在一些教材中map被翻譯為對映。
什麼是鍵?什麼是值?
手機上的聯絡人,就是一個最典型的對映(map)。
想象一下,你的手機裡儲存了很多聯絡人的資訊。每個聯絡人都有一個名字,而每個名字對應著一個電話號碼。
在這裡,名字就是所謂的“鍵”,電話號碼就是“值”。
舉個例子:張三的電話號碼是123-456-7890
,那麼這裡張三就是鍵,123-456-7890
就是值。
鍵必須是唯一的。也就是說,不能有兩個張三。
如果提供了鍵,就可以查詢一個值。即,透過名字可以查詢電話號碼。
對映
HashMap可被稱為雜湊對映或者雜湊表。
可以用下面的方法建立一個雜湊對映(HashMap)來儲存聯絡人資訊:
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class MyTest {
public static void main(String[] args) {
// 1 建立 HashMap 類物件
Map<String, String> map = new HashMap<>();
// Map介面是泛型介面, HashMap類是泛型類
// 需要在尖括號中指定 鍵 和 值 型別
// 2 用 put 方法向對映中新增鍵值對
map.put("zhangsan", "123-456-7890");
map.put("lisi", "234-567-8901");
map.put("wangwu", "345-678-9012");
// 3 根據鍵獲取值
String tmp = map.get("zhangsan");
System.out.println(tmp);
// 4 模擬查詢預設電話
String name = new Scanner(System.in).next();
if (map.containsKey(name)) {
System.out.println(name + "的電話: " + map.get(name));
} else {
System.out.println(name + "不在聯絡人列表中");
}
// 5 刪除指定鍵的對映
map.remove("zhangsan");
// 6 輸出整個聯絡人列表
System.out.println("*******************************");
for (Map.Entry<String, String> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
System.out.println("姓名: " + key + ", 電話: " + value);
}
}
}
其中,Map.Entry
是 Map
介面的一個巢狀介面,它代表 Map
中的一個鍵值對(需注意,它也是一個泛型介面)。它實際上就是 Map
中每個元素的一個抽象,包含了鍵和值。可以透過 entry.getKey()
獲取鍵,entry.getValue()
獲取值。
練習(★★★★★)
建立2個字串陣列,第一個陣列內容為:[黑龍江省,浙江省,江西省,廣東省,福建省]
,
第二個陣列為:[哈爾濱,杭州,南昌,廣州,福州]
,
將第一個陣列元素作為key
,第二個陣列元素作為value
儲存到Map
集合中。
刪除Map
集合中Key=黑龍江省的鍵值對。
迭代Map
集合,參考的輸出資料格式如下:
福建省=福州
浙江省=杭州
江西省=南昌
廣東省=廣州