對映(Map)

Java 的資料型別與例外狀況

Jim White

Java Developer

Map 是查詢表

  • Map 作為查詢用的資料結構。
    • 在特定「key」位置儲存「value」。
    • 用「key」取回已儲存的「value」。
  • 例:打電話給診所
    • 依名字/生日(key)查到病歷(value 物件)。

像打電話到診所時,他們用你的姓名與生日來查找病歷,Map 就是這種查詢用的資料結構

Java 的資料型別與例外狀況

Map 介面

  • Map 介面定義了鍵值配對的操作。
    • 如何在特定 key 中儲存或「put」一個 value。
    • 如何從 Map 中「remove」指定 key 的 value。
    • 如何依 key 取回 value。
  • 有多種 Map 的實作,行為相近
    • 最常見的實作是 HashMap
1 See https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html for details
Java 的資料型別與例外狀況

HashMap 的鍵與值

Map 或 HashMap 的 key 與 value 可以是相同或不同型別

Java 的資料型別與例外狀況

建立 HashMap

HashMap<Integer, String> map = new HashMap<Integer, String>();
  • HashMap 的參數化/泛型建構子需要「兩種型別」。

    • 第一種型別=key 的型別

      HashMap 的第一個泛型參數是鍵的型別

    • 第二種型別=value 的型別

      HashMap 的第二個泛型參數是值的型別

在泛型中宣告 Map 的 key 與 value 型別,指定鍵和值的資料型別

  • 需要匯入 java.util.HashMap
Java 的資料型別與例外狀況

HashMap 方法

  • .put(key,value) 將鍵值配對加入表中。
  • .remove(key) 移除該 key 的鍵值配對。
  • .get(key) 取回該 key 的 value。
import java.util.HashMap
...
HashMap<Integer, String> map
    = new HashMap<Integer, String>();
map.put(0, "Jim");
map.put(1, "James");
map.put(3, null);
map.put(4, "James");
map.remove(0);
System.out.println(map);
{1=James, 3=null, 4=James}
String nickname = map.get(1);
System.out.println(nickname);
James
Java 的資料型別與例外狀況

Collections

  • java.util.Collections 是輔助類別。
  • 用於排序、填充、複製、搜尋等作業
    • 只有 static 方法。
1 See https://docs.oracle.com/en/java/javase//21/docs/api/java.base/java/util/Collections.html
Java 的資料型別與例外狀況

Collection 方法

  • 將多個物件加入 List
    • addAll(List list, Object a, b, ...)
  • 回傳集合中某物件的出現次數
    • frequency(Collection c, Object o)
  • 反轉 List 中物件順序
    • reverse(List list)
  • List 中物件進行排序
    • sort(List list)
  • 以另一物件取代 List 中所有元素
    • fill(List a, Object o)
ArrayList<String> x = new ArrayList<String>();
Collections.addAll(x,
    "milk", "bread", "eggs", "milk");
System.out.println(x);

int cnt = Collections.frequency(x, "milk"); System.out.println(cnt);
Collections.reverse(x); System.out.println(x);
Collections.sort(x); System.out.println(x);
Collections.fill(x, "sugar"); System.out.println(x);
[milk, bread, eggs, milk]

2
[milk, eggs, bread, milk]
[bread, eggs, milk, milk]
[sugar, sugar, sugar, sugar]
Java 的資料型別與例外狀況

Arrays

  • 有時需要把陣列(如 int[])轉成 List
    • Java 陣列不可調整大小,可能需要增減元素。
    • List 功能更完整(搜尋、排序等)。
  • java.util.Arrays 是另一個輔助類別
    • 可將 Java 陣列轉為 List
Java 的資料型別與例外狀況

Arrays 範例

String[] arrayCountries = {"France", "Japan", "Brazil", "Egypt", "China"};
List<String> countries = Arrays.asList(arrayCountries);
System.out.println(countries);
[France, Japan, Brazil, Egypt, China]
Java 的資料型別與例外狀況

一起來練習吧!

Java 的資料型別與例外狀況

Preparing Video For Download...