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

Java 集合框架核心操作大全:Map、List 常用方法與遍歷最佳實踐

     編輯:Java 綜合教學

一、Map 接口與 HashMap 詳解

Map 存儲鍵值對,鍵唯一。HashMap 是最常用的實現,基於哈希表,查詢速度快(O(1)),非線程安全,允許一個 null key 和多個 null value。

核心方法速查

操作方法說明
添加/更新put(K key, V value)放入鍵值對,鍵存在則覆蓋並返回舊值
刪除remove(Object key)根據鍵刪除條目
清空clear()移除所有映射關係
查詢大小size()返回鍵值對數量
獲取值get(Object key)根據鍵獲取值,不存在返回 null
判斷鍵存在containsKey(Object key)O(1) 判斷鍵是否存在
判斷值存在containsValue(Object value)O(n) 遍歷判斷值是否存在

代碼示例

public static void main(String[] args) {
    Map<Integer, String> map = new HashMap<>(); // 強類型推薦
    map.put(1, "一");
    map.put(2, "二");
    map.put(3, "三");
    map.put(4, "四");
    
    map.remove(1); // 刪除 key=1
    
    System.out.println("元素個數: " + map.size()); // 3
    System.out.println("key=4 的值: " + map.get(4)); // 四
    System.out.println("是否包含 key=1: " + map.containsKey(1)); // false
    System.out.println("是否包含 value=二: " + map.containsValue("二")); // true
}

運行結果

二、List 接口與 ArrayList/LinkedList 詳解

List 有序、可重複、支持索引訪問。

  • ArrayList:動態數組,隨機訪問快(O(1)),擴容 1.5 倍,插入刪除慢(需移動元素)。
  • LinkedList:雙向鏈表,插入刪除快(O(1)),隨機訪問慢(O(n)),佔用更多內存。

核心方法速查

操作方法說明
添加add(E e) / add(int index, E element)尾部添加 / 指定位置插入
刪除remove(int index) / remove(Object o) / clear()按索引/按對象/清空
獲取get(int index) / size() / contains(Object o)按索引取值/長度/包含判斷

三種遍歷方式對比

List<String> list = new ArrayList<>();
list.add("jackie"); list.add("peter"); list.add("annie");
list.add("martin"); list.add("marry");
list.remove(3);       // 刪除索引 3 (martin)
list.remove("marry"); // 刪除對象 "marry"

// 1. 普通 for 循環(支持索引操作、刪除時需倒序或索引回退)
for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}

// 2. 增強 for / for-each(語法簡潔,不可刪除元素,否則拋 ConcurrentModificationException)
for (String s : list) {
    System.out.println(s);
}

// 3. Iterator 迭代器(唯一安全的遍歷中刪除方式)
Iterator<String> it = list.iterator();
while (it.hasNext()) {
    String s = it.next();
    if ("annie".equals(s)) {
        it.remove(); // 安全刪除
    }
    System.out.println(s);
}

運行結果

三、迭代器模式深度解析

Iterator 是輕量級對象,單向遍歷:hasNext()、next()、remove()。ListIterator 繼承它,雙向遍歷,支持 add/set。

四、泛型與強類型集合

使用泛型 <K, V>、<E> 實現編譯期類型檢查,消除強轉,提高代碼可讀性與安全性。

Map<String, Integer> map = new HashMap<>(); // Java 7+ 鑽石語法
List<String> list = new ArrayList<>();

總結建議

  • 高頻查詢、鍵值映射:首選 HashMap。
  • 頻繁遍歷、隨機訪問、尾部增刪:首選 ArrayList。
  • 頻繁頭部/中間插入刪除:首選 LinkedList。
  • 遍歷時需刪除:必須使用 Iterator。
  • 多線程環境:考慮 ConcurrentHashMap、CopyOnWriteArrayList 或 Collections.synchronizedXxx。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved