首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2SE

Java 集合框架精解(三):Map 介面與 HashMap 實戰

     編輯:J2SE

前言

Map 介面不繼承 Collection,而是以「鍵值對」形式儲存資料。本文說明 Map 核心操作、HashMap 使用範例,並示範 Java 5 泛型與增強 for 循環的現代寫法。

一、 Map 核心特徵

  • **鍵值對儲存**:每個鍵對應一個值,鍵不可重複,值可重複。
  • **核心方法**:put(K, V) 新增/更新,get(K) 取值,containsKey()、containsValue()、remove()、size()。
  • **無法直接迭代**:需透過 keySet()、values()、entrySet() 取得視圖再迭代。

二、 HashMap 完整範例

import java.util.HashMap;
import java.util.Map;

public class TestMap {
    public static void main(String[] args) {
        // 使用泛型宣告:鍵為 String,值為 Integer
        Map<String, Integer> map = new HashMap<>();
        
        map.put("a1", 1);
        map.put("b2", 2);
        map.put("c3", 3);
        map.put("d4", 4);
        map.put("e5", 5);
        
        display(map);
        
        System.out.println("包含鍵 c3: " + map.containsKey("c3")); // true
        map.remove("c3");
        System.out.println("移除後包含值 3: " + map.containsValue(3)); // false
        System.out.println("大小: " + map.size()); // 4
    }

    // 使用增強 for 循環遍歷 keySet
    public static void display(Map<String, Integer> map) {
        for (String key : map.keySet()) {
            System.out.println(key + " : " + map.get(key));
        }
    }
}

三、 常見 Map 實作比較

實作類別特點適用場景
HashMap雜湊表,查詢/新增/刪除 O(1),無序,允許 null 鍵/值通用高效鍵值儲存
LinkedHashMap維護插入順序或存取順序,效能略低於 HashMap需保持順序的快取、LRU 實作
TreeMap紅黑樹,鍵自然排序或自訂 Comparator,O(log n)需排序遍歷、範圍查詢
Hashtable同步化、不允許 null、舊 API舊程式碼相容(建議用 ConcurrentHashMap)
ConcurrentHashMap分段鎖高併發,JDK 8+ 改用 CAS + synchronized多執行緒環境共享 Map

四、 Java 8+ 實用新方法


// 計算或合併
map.merge("key", 1, (old, v) -> old + v); // 原子累加
map.computeIfAbsent("key", k -> expensiveDefault()); // 延遲初始化

// forEach 遍歷
map.forEach((k, v) -> System.out.println(k + "=" + v));

// 替換
map.replaceAll((k, v) -> v * 2);

五、 總結

Map 是 Java 處理鍵值映射的核心工具。掌握 HashMap 等實作特性、善用泛型與現代 API,能寫出高效、型別安全、可維護的程式碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved