
Java 教程
- Java – 首頁
- Java – 概述
- Java – 歷史
- Java – 特性
- Java 與 C++
- JVM – Java 虛擬機器
- Java – JDK 與 JRE 與 JVM
- Java – Hello World 程式
- Java – 環境設定
- Java – 基本語法
- Java – 變數型別
- Java – 資料型別
- Java – 型別轉換
- Java – Unicode 系統
- Java – 基本運算子
- Java – 註釋
- Java – 使用者輸入
- Java – 日期和時間
Java 控制語句
- Java – 迴圈控制
- Java – 決策制定
- Java – if-else
- Java – switch
- Java – for 迴圈
- Java – for-each 迴圈
- Java – while 迴圈
- Java – do-while 迴圈
- Java – break
- Java – continue
面向物件程式設計
- Java – OOPs 概念
- Java – 物件和類
- Java – 類屬性
- Java – 類方法
- Java – 方法
- Java – 變數作用域
- Java – 建構函式
- Java – 訪問修飾符
- Java – 繼承
- Java – 聚合
- Java – 多型性
- Java – 重寫
- Java – 方法過載
- Java – 動態繫結
- Java – 靜態繫結
- Java – 例項初始化塊
- Java – 抽象
- Java – 封裝
- Java – 介面
- Java – 包
- Java – 內部類
- Java – 靜態類
- Java – 匿名類
- Java – 單例類
- Java – 包裝類
- Java – 列舉
- Java – 列舉建構函式
- Java – 列舉字串
Java 內建類
Java 檔案處理
Java 錯誤和異常
- Java – 異常
- Java – try-catch 塊
- Java – try-with-resources
- Java – 多重 catch 塊
- Java – 巢狀 try 塊
- Java – finally 塊
- Java – throw 異常
- Java – 異常傳播
- Java – 內建異常
- Java – 自定義異常
Java 多執行緒
- Java – 多執行緒
- Java – 執行緒生命週期
- Java – 建立執行緒
- Java – 啟動執行緒
- Java – 執行緒連線
- Java – 執行緒命名
- Java – 執行緒排程器
- Java – 執行緒池
- Java – 主執行緒
- Java – 執行緒優先順序
- Java – 守護執行緒
- Java – 執行緒組
- Java – 關閉鉤子
Java 同步
Java 網路程式設計
- Java – 網路程式設計
- Java – Socket 程式設計
- Java – URL 處理
- Java – URL 類
- Java – URLConnection 類
- Java – HttpURLConnection 類
- Java – Socket 類
- Java –泛型
Java 集合
Java 介面
Java 資料結構
Java 集合演算法
高階 Java
- Java – 命令列引數
- Java – Lambda 表示式
- Java – 傳送郵件
- Java – Applet 基礎
- Java – Javadoc 註釋
- Java – 自動裝箱和拆箱
- Java – 檔案不匹配方法
- Java – REPL (JShell)
- Java – 多版本 Jar 檔案
- Java – 私有介面方法
- Java – 內部類菱形運算子
- Java – 多解析度影像 API
- Java – 集合工廠方法
- Java – 模組系統
- Java – Nashorn JavaScript
- Java – Optional 類
- Java – 方法引用
- Java – 函式式介面
- Java – 預設方法
- Java – Base64 編碼解碼
- Java – switch 表示式
- Java – Teeing 收集器
- Java – 微基準測試
- Java – 文字塊
- Java – 動態 CDS 歸檔
- Java – Z 垃圾收集器 (ZGC)
- Java – 空指標異常
- Java – 打包工具
- Java – 密封類
- Java – 記錄類
- Java – 隱藏類
- Java – 模式匹配
- Java – 簡潔數字格式化
- Java – 垃圾回收
- Java – JIT 編譯器
Java 雜項
- Java – 遞迴
- Java – 正則表示式
- Java – 序列化
- Java – 字串
- Java – Process API 改進
- Java – Stream API 改進
- Java – 增強的 @Deprecated 註解
- Java – CompletableFuture API 改進
- Java – 流
- Java – 日期時間 API
- Java 8 – 新特性
- Java 9 – 新特性
- Java 10 – 新特性
- Java 11 – 新特性
- Java 12 – 新特性
- Java 13 – 新特性
- Java 14 – 新特性
- Java 15 – 新特性
- Java 16 – 新特性
Java APIs 和框架
Java 類引用
- Java – Scanner
- Java – 陣列
- Java – 字串
- Java – Date
- Java – ArrayList
- Java – Vector
- Java – Stack
- Java – PriorityQueue
- Java – LinkedList
- Java – ArrayDeque
- Java – HashMap
- Java – LinkedHashMap
- Java – WeakHashMap
- Java – EnumMap
- Java – TreeMap
- Java – IdentityHashMap
- Java – HashSet
- Java – EnumSet
- Java – LinkedHashSet
- Java – TreeSet
- Java – BitSet
- Java – Dictionary
- Java – Hashtable
- Java – Properties
- Java – Collection
- Java – Array
Java 有用資源
Java – 如何使用迭代器?
通常,您可能希望迴圈遍歷集合中的元素。例如,您可能希望顯示每個元素。最簡單的方法是使用迭代器,迭代器是一個實現 Iterator 或 ListIterator 介面的物件。
迭代器使您可以迴圈遍歷集合,獲取或刪除元素。ListIterator 擴充套件了 Iterator,允許雙向遍歷列表並修改元素。
在您可以透過迭代器訪問集合之前,必須先獲取一個迭代器。每個集合類都提供了一個 iterator() 方法,該方法返回指向集合開頭的迭代器。透過使用此迭代器物件,您可以一次訪問集合中的每個元素。
通常,要使用迭代器迴圈遍歷集合的內容,請遵循以下步驟:
透過呼叫集合的 iterator() 方法,獲取指向集合開頭的迭代器。
設定一個迴圈,該迴圈呼叫 hasNext()。只要 hasNext() 返回 true,迴圈就繼續迭代。
在迴圈內,透過呼叫 next() 獲取每個元素。
對於實現 List 的集合,您還可以透過呼叫 ListIterator 獲取迭代器。
迭代器宣告的方法
序號 | 方法和描述 |
---|---|
1 | boolean hasNext() 如果有更多元素,則返回 true。否則,返回 false。 |
2 | Object next() 返回下一個元素。如果沒有下一個元素,則丟擲 NoSuchElementException。 |
3 | void remove() 刪除當前元素。如果嘗試呼叫 remove() 之前沒有呼叫 next(),則丟擲 IllegalStateException。 |
ListIterator 宣告的方法
序號 | 方法和描述 |
---|---|
1 | void add(Object obj) 在 next() 的下一次呼叫將返回的元素前面,將 obj 插入列表中。 |
2 | boolean hasNext() 如果有下一個元素,則返回 true。否則,返回 false。 |
3 | boolean hasPrevious() 如果有前一個元素,則返回 true。否則,返回 false。 |
4 | Object next() 返回下一個元素。如果沒有下一個元素,則丟擲 NoSuchElementException。 |
5 | int nextIndex() 返回下一個元素的索引。如果沒有下一個元素,則返回列表的大小。 |
6 | Object previous() 返回前一個元素。如果沒有前一個元素,則丟擲 NoSuchElementException。 |
7 | int previousIndex() 返回前一個元素的索引。如果沒有前一個元素,則返回 -1。 |
8 | void remove() 從列表中刪除當前元素。如果在呼叫 next() 或 previous() 之前呼叫 remove(),則丟擲 IllegalStateException。 |
9 | void set(Object obj) 將 obj 分配給當前元素。這是最後一次透過呼叫 next() 或 previous() 返回的元素。 |
示例 1
這是一個演示迭代器的示例。它使用 ArrayList 物件,但一般原則適用於任何型別的集合。
import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class IteratorDemo { public static void main(String args[]) { // Create an array list List<String> al = new ArrayList<>(); // add elements to the array list al.add("C"); al.add("A"); al.add("E"); al.add("B"); al.add("D"); al.add("F"); // Use iterator to display contents of al System.out.print("Original contents of al: "); Iterator<String> itr = al.iterator(); while(itr.hasNext()) { Object element = itr.next(); System.out.print(element + " "); } System.out.println(); } }
輸出
Original contents of al: C A E B D F
示例 2
這是一個演示 ListIterator 的示例。它使用 ArrayList 物件,但一般原則適用於任何型別的集合。
當然,ListIterator 僅適用於實現List 介面的那些集合。
import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; public class IteratorDemo { public static void main(String args[]) { // Create an array list List<String> al = new ArrayList<>(); // add elements to the array list al.add("C"); al.add("A"); al.add("E"); al.add("B"); al.add("D"); al.add("F"); // Use iterator to display contents of al System.out.print("Original contents of al: "); Iterator<String> itr = al.iterator(); while(itr.hasNext()) { Object element = itr.next(); System.out.print(element + " "); } } }
輸出
Original contents of al: C A E B D F
示例 3
這是一個演示 ListIterator 在迭代時修改列表的示例。它使用 ArrayList 物件,但一般原則適用於任何型別的集合。
import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; public class IteratorDemo { public static void main(String args[]) { // Create an array list List<String> al = new ArrayList<>(); // add elements to the array list al.add("C"); al.add("A"); al.add("E"); al.add("B"); al.add("D"); al.add("F"); // Use iterator to display contents of al System.out.print("Original contents of al: "); Iterator<String> itr = al.iterator(); while(itr.hasNext()) { Object element = itr.next(); System.out.print(element + " "); } System.out.println(); // Modify objects being iterated ListIterator<String> litr = al.listIterator(); while(litr.hasNext()) { Object element = litr.next(); litr.set(element + "+"); } System.out.print("Modified contents of al: "); itr = al.iterator(); while(itr.hasNext()) { Object element = itr.next(); System.out.print(element + " "); } System.out.println(); // Now, display the list backwards System.out.print("Modified list backwards: "); while(litr.hasPrevious()) { Object element = litr.previous(); System.out.print(element + " "); } System.out.println(); } }
輸出
Original contents of al: C A E B D F Modified contents of al: C+ A+ E+ B+ D+ F+ Modified list backwards: F+ D+ B+ E+ A+ C+