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

Java ListIterator 逆序遍歷 ArrayList 完整教程

     編輯:Java 程式設計入門

為什麼需要 ListIterator?

Iterator 只能單向前進,而 ListIterator 提供 hasPrevious()、previous() 等雙向游標操作,是實現逆序遍歷的標準工具。

核心算法邏輯

  1. 獲取 ListIterator:list.listIterator()
  2. 先將游標移至末尾:while (li.hasNext()) li.next();
  3. 逆序輸出:while (li.hasPrevious()) System.out.print(li.previous() + " ");

完整可運行代碼

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class IteratorDemo {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) list.add(i);

        // 正序輸出
        System.out.print("原順序:");
        list.forEach(i -> System.out.print(i + " "));
        System.out.println();

        // 逆序邏輯
        ListIterator<Integer> li = list.listIterator();
        while (li.hasNext()) li.next(); // 移至末尾
        System.out.print("逆序後:");
        while (li.hasPrevious()) System.out.print(li.previous() + " ");
    }
}

運行效果

控制台輸出正序與逆序對比

進階用法拓展

  • 指定起始位置:list.listIterator(5) 從索引 5 開始
  • 邊遍歷邊修改:li.set(newVal) 替換當前元素,li.add(newVal) 插入
  • 獲取索引:li.nextIndex()、li.previousIndex()

常見誤區

❌ 錯誤:for (li = list.listIterator(); li.hasNext(); li.next()) 這樣寫會漏掉最後一個元素的逆序輸出。
✅ 正確:分兩步——先單獨循環移至末尾,再逆序循環。

總結

ListIterator 是雙向鏈表遍歷的利器,掌握「先移至末尾、再逆序讀取」模式,即可輕鬆實現 List 的逆序、區間逆序、邊遍歷邊修改等高級操作。

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