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

Java Collection 接口體系與 List 實作詳解

     編輯:Java 相關知識

Collection 體系架構概覽

Collection 是 Java 集合框架的頂層介面,主要分為兩大分支:

  • List:有序、可重複、支援索引存取
  • Set:無序、不可重複

List 主要實作類別比較

實作類別底層資料結構特點執行緒安全
ArrayList動態陣列查詢快、增刪慢非同步
LinkedList雙向鏈結串列增刪快、查詢慢非同步
Vector陣列同步、效能較低同步

List 介面專有方法

由於 List 擁有索引,因此提供了針對索引操作的專有方法:

  • 新增:add(index, element)、addAll(index, Collection)
  • 刪除:remove(index)
  • 修改:set(index, element)
  • 查詢:get(index)、subList(from, to)、listIterator()、indexOf(obj)

ListIterator:List 專用迭代器

ListIterator 繼承自 Iterator,提供雙向遍歷與修改功能:

  • hasNext() / next():前向遍歷
  • hasPrevious() / previous():後向遍歷
  • add()、set()、remove():遍歷過程中修改集合
注意:使用 Iterator 遍歷時,不可直接呼叫集合的修改方法,否則會拋出 ConcurrentModificationException。必須使用迭代器本身的 remove(),或改用 ListIterator 進行增刪改操作。

完整程式碼範例

import java.util.*;

public class ListDemo {
    public static void sop(Object obj) { System.out.println(obj); }

    public static void basicOperations() {
        ArrayList al = new ArrayList();
        al.add("java01");
        al.add("java02");
        al.add("java03");
        sop("原集合:" + al);

        al.add(1, "java09");        // 指定位置新增
        sop("get(1):" + al.get(1)); // 取得指定索引元素
        sop("indexOf:"+ al.indexOf("java02"));

        List sub = al.subList(1, 3); // 取得子列表
        sop("subList:" + sub);
    }

    public static void iteratorDemo() {
        ArrayList al = new ArrayList();
        al.add("java01"); al.add("java02"); al.add("java03");

        ListIterator li = al.listIterator();
        while (li.hasNext()) {
            Object obj = li.next();
            if (obj.equals("java02")) li.set("java006"); // 修改元素
        }

        // 反向遍歷
        while (li.hasPrevious()) {
            sop("previous:" + li.previous());
        }
        sop(al);
    }

    public static void main(String[] args) {
        basicOperations();
        iteratorDemo();
    }
}

關鍵要點總結

  1. ArrayList 適合頻繁查詢、較少增刪的場景
  2. LinkedList 適合頻繁在頭尾增刪的場景
  3. 遍歷時修改集合請使用 ListIterator
  4. Vector 已被 ArrayList 取代,不建議新專案使用
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved