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

Java 迭代器詳解:Iterator、ListIterator 與 foreach 遍歷對比

     編輯:Java 綜合教學

Java 迭代器詳解:Iterator、ListIterator 與 foreach

foreach 語法

for (ElementType item : collectionOrArray) { ... }
  • Java 5 引入,遍歷數組/集合極其便捷。
  • 本質是 for 的語法糖,可改寫為普通 for,但不能完全替代(如需索引、逆序、修改集合)。

代碼綜合示例

package com.twzheng;
import java.util.*;

public class MainClass {
    private static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        printList(list);           // Iterator 遍歷
        initialLinkedList(list);   // ListIterator 操作
        System.out.print("查找值: ");
        String val = scanner.next();
        System.out.println(findMember(list, val) ? "存在" : "不存在"); // foreach
        printList(list);
    }

    // Iterator 單向遍歷
    private static void printList(LinkedList<String> list) {
        System.out.println("======================================");
        Iterator<String> it = list.iterator();
        if (!it.hasNext()) { System.out.println("空列表"); return; }
        int i = 0;
        while (it.hasNext()) System.out.println(" <" + i++ + ">" + it.next());
        System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
    }

    // foreach 查找
    private static boolean findMember(LinkedList<String> list, String target) {
        for (String s : list) {
            if (s.equals(target)) {
                System.out.println("發現於索引 " + list.indexOf(s));
                return true;
            }
        }
        return false;
    }

    // ListIterator 雙向、添加
    private static boolean addMember(LinkedList<String> list, String val) {
        ListIterator<String> lit = list.listIterator();
        while (lit.hasNext()) {
            int cmp = lit.next().compareTo(val);
            if (cmp == 0) { System.out.println("已存在"); return false; }
            if (cmp > 0) { lit.previous(); lit.add(val); System.out.println("已插入"); return true; }
        }
        lit.add(val); return true;
    }

    // 交互式初始化
    private static void initialLinkedList(LinkedList<String> list) {
        System.out.println("初始化列表:");
        boolean stop = false;
        try {
            while (!stop) {
                System.out.println(" 0-結束 1-添加");
                switch (scanner.nextInt()) {
                    case 0: stop = true; break;
                    case 1: System.out.print("值: "); addMember(list, scanner.next()); break;
                    default: System.out.println("輸入錯誤");
                }
            }
        } catch (Exception e) { System.out.println("輸入錯誤"); }
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved