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

Java 常用集合操作速查:Map、List 核心 API 實戰指南

     編輯:Java 相關知識

集合框架是 Java 日常開發最高頻工具。本文聚焦 Map 與 List 兩大核心接口,梳理增刪改查、遍歷、類型安全等實戰高頻操作,附帶可直接運行的代碼片段。

一、Map:鍵值對存儲

常用實現:HashMap(非線程安全、允許 null、無序)

核心操作

操作方法說明
新增/更新put(K key, V value)鍵存在則覆蓋,返回舊值
刪除單個remove(Object key)按鍵刪除,返回被刪除的值
清空clear()移除所有映射
獲取值get(Object key)鍵不存在返回 null
鍵是否存在containsKey(Object key)O(1) 平均複雜度
值是否存在containsValue(Object value)O(n) 需遍歷
大小size()映射對數
所有鍵keySet()返回 Set<K> 視圖
所有值values()返回 Collection<V> 視圖
所有鍵值對entrySet()返回 Set<Map.Entry<K,V>>,遍歷首選

代碼示例

Map<Integer, String> map = new HashMap<>();
map.put(1, "一"); map.put(2, "二"); map.put(3, "三"); map.put(4, "四");
map.remove(1);
System.out.println("元素數量:" + map.size());           // 3
System.out.println("鍵4對應值:" + map.get(4));          // 四
System.out.println("是否包含鍵1:" + map.containsKey(1)); // false
System.out.println("是否包含值\"二\":" + map.containsValue("二")); // true

三種遍歷方式(推薦順序)

// 1. entrySet - 單次查找獲取鍵值,性能最佳
for (Map.Entry<Integer, String> entry : map.entrySet()) {
    System.out.println(entry.getKey() + "=" + entry.getValue());
}

// 2. keySet + get - 兩次查找,可讀性好
for (Integer key : map.keySet()) {
    System.out.println(key + "=" + map.get(key));
}

// 3. values - 僅需值
for (String value : map.values()) {
    System.out.println(value);
}

二、List:有序可重複集合

常用實現:ArrayList(動態數組、隨機訪問快)、LinkedList(鏈表、首尾增刪快)

核心操作

操作方法說明
尾部添加add(E e)返回 true
指定位置插入add(int index, E e)後續元素右移
按索引獲取get(int index)O(1) ArrayList / O(n) LinkedList
按索引刪除remove(int index)返回被刪除元素
按對象刪除remove(Object o)刪除首個匹配項
清空clear()
判斷包含contains(Object o)依賴 equals()
大小size()
設置值set(int index, E e)返回舊值
索引查找indexOf(Object o)首次出現位置,無則 -1

遍歷方式

List<String> list = new ArrayList<>();
list.add("jackie"); list.add("peter"); list.add("annie"); 
list.add("martin"); list.add("marry");

// 1. 索引 for 循環 - ArrayList 推薦
for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}

// 2. 增強 for (foreach) - 最通用
for (String s : list) {
    System.out.println(s);
}

// 3. Iterator - 需邊遍歷邊刪除時必須用
Iterator<String> it = list.iterator();
while (it.hasNext()) {
    String s = it.next();
    if (s.startsWith("m")) it.remove(); // 安全刪除
}

// 4. ListIterator - 雙向遍歷、可添加、可修改,List 專用
ListIterator<String> lit = list.listIterator();
while (lit.hasNext()) { System.out.println(lit.next()); }
while (lit.hasPrevious()) { System.out.println(lit.previous()); }

三、泛型:類型安全的基石

// 強類型集合 - 編譯期檢查,避免 ClassCastException
Map<String, Integer> map = new HashMap<>();
List<Employee> list = new ArrayList<>();

// 鑽石操作符 <> (Java 7+) 省略右側類型參數
Map<String, List<Integer>> complex = new HashMap<>();

四、選型建議

  • Map:預設 HashMap;需有序用 LinkedHashMap(插入序/訪問序);需排序用 TreeMap;高併發用 ConcurrentHashMap
  • List:隨機訪問多用 ArrayList;首尾頻繁增刪用 LinkedList;線程安全用 Collections.synchronizedList 或 CopyOnWriteArrayList

總結

熟練掌握核心 API、遍歷模式、泛型聲明,能顯著減少低級錯誤與性能陷阱。實際開發中,優先選用接口類型聲明變量(如 List<String> list = new ArrayList<>()),便於實現類切換。

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