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

Java 集合框架核心方法詳解:以 ArrayList 為例掌握 Collection 接口增刪改查與迭代

     編輯:Java 綜合教學

Collection 接口核心方法分類

分類方法說明
添加boolean add(E e)添加單個元素
boolean addAll(Collection c)批量添加
刪除boolean remove(Object o)刪除指定元素 (首次出現)
boolean removeAll(Collection c)刪除所有包含在 c 中的元素
void clear()清空集合
判斷boolean contains(Object o)是否包含指定元素
boolean isEmpty()是否為空
獲取Iterator iterator()獲取迭代器
int size()元素個數
交集boolean retainAll(Collection c)僅保留與 c 共有元素 (求交集)
轉數組Object[] toArray() / T[] toArray(T[] a)集合轉數組

ArrayList 實戰演示

import java.util.*;

public class CollectionDemo {
    public static void main(String[] args) {
        ArrayList list = new ArrayList<>();
        // 1. 添加
        list.add("Java基礎");
        list.add("集合框架");
        list.add("多線程");
        list.add("JVM調優");
        System.out.println("原集合: " + list);  // [Java基礎, 集合框架, 多線程, JVM調優]

        // 2. 刪除
        list.remove("多線程");           // 刪除指定元素
        // list.removeAll(Arrays.asList("JVM調優")); // 批量刪除
        // list.clear();                  // 清空
        System.out.println("刪除後: " + list);   // [Java基礎, 集合框架, JVM調優]

        // 3. 判斷
        System.out.println("包含'集合框架'? " + list.contains("集合框架")); // true
        System.out.println("是否為空? " + list.isEmpty()); // false

        // 4. 獲取大小
        System.out.println("大小: " + list.size()); // 3

        // 5. 迭代器遍歷 (標準模式)
        System.out.println("--- 迭代器遍歷 ---");
        for (Iterator it = list.iterator(); it.hasNext(); ) {
            System.out.println(it.next());
        }

        // 6. 交集
        ArrayList other = new ArrayList<>(Arrays.asList("集合框架", "JVM調優", "設計模式"));
        list.retainAll(other);  // list 變為 [集合框架, JVM調優]
        System.out.println("交集後: " + list);

        // 7. 轉數組
        String[] arr = list.toArray(new String[0]);
        System.out.println("數組: " + Arrays.toString(arr));
    }
}

迭代器模式深度解析

  • 角色:集合 (Aggregate) 提供 iterator() 返回迭代器 (Iterator);迭代器封裝遍歷狀態 (游標)。
  • 核心方法:hasNext() 判斷、next() 取出、remove() 刪除當前元素 (唯一安全刪除方式)。
  • Fail-Fast:遍歷過程中若集合結構被修改 (非迭代器自身 remove),拋 ConcurrentModificationException。

List 介面特有方法 (ArrayList 體現)

分類方法說明
添加void add(int index, E element)指定位置插入
boolean addAll(int index, Collection c)指定位置批量插入
刪除E remove(int index)刪除指定位置元素,返回被刪元素
修改E set(int index, E element)替換指定位置元素,返回舊元素
查詢E get(int index)獲取指定位置元素
List subList(int from, int to)截取子列表 [from, to) (視圖,底層共享數組)
int indexOf(Object o) / lastIndexOf首次/最後一次出現位置
迭代器ListIterator listIterator()雙向迭代器,支援 hasPrevious/previous/add/set

ListIterator 實戰:雙向遍歷與修改

List list = new ArrayList<>(Arrays.asList("A", "B", "C"));
ListIterator li = list.listIterator();
// 正向
while (li.hasNext()) {
    String s = li.next();
    if ("B".equals(s)) li.set("B2");  // 修改
}
// 反向
while (li.hasPrevious()) {
    System.out.println(li.previous()); // C2, B2, A
}
System.out.println(list); // [A, B2, C]

避坑指南

  1. 遍歷中刪除:只能用 iterator.remove(),不能 list.remove() (拋 CME)。
  2. subList 視圖:操作子列表會影響原列表,且原列表結構變更會導致子列表失效。
  3. toArray 型別:用 toArray(new String[0]) 獲取泛型數組,避免 Object[] 強轉報錯。
  4. ListIterator add/set:只能在 next/previous 後調用,否則拋 IllegalStateException。

總結

Collection 接口定義了集合通用契約,ArrayList 作為 List 典型實現,提供隨機訪問 (O(1))、順序遍歷、動態擴容。掌握增刪改查、迭代器、ListIterator、交集/轉數組等核心操作,是 Java 日常開發與面試的必考基本功。

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