迭代器入門

Java 的輸入/輸出與串流

Alex Liu

Software Development Engineer

操作集合

  • 本段影片後續使用的 HashSet 範例
import java.util.HashSet;

public class SampleHashSetData { public static void main(String[] args) { HashSet<String> fruits = new HashSet<>();
fruits.add("Apple"); fruits.add("Banana");
} }
{Apple, Banana}
Java 的輸入/輸出與串流

使用 For-Each 迴圈

  • For-Each 迴圈
    • 格式:for (type x: collection){}
    • 自動處理每個元素
    • 可用於多種集合:ListSetMap
  • 範例:使用樣本集合 fruits[Apple, Banana]
for (String x : fruits) {
    System.out.println(x);
}
Apple
Banana
Java 的輸入/輸出與串流

用 Iterator 巡覽集合

  • 使用 Iterator<>:支援 ListSetQueue
  • 匯入 Iterator 類別
import java.util.Iterator;

// 建立樣本集合 `fruits` 的 `Iterator` 物件 `it` Iterator<String> it = fruits.iterator(); // 使用 `.hasNext()` 檢查是否還有元素 while (it.hasNext()) { // 使用 `.next()` 取得元素 System.out.print(it.next());}
Apple Banana
Java 的輸入/輸出與串流

用 Iterator 刪除元素

  • 使用 .remove() 搭配 Iterator 刪除元素

$$

Iterator<String> it = fruits.iterator();
while (it.hasNext()) {
    String fruit = it.next();
    if (fruit.startsWith("A")) {
        // 若元素以 `A` 開頭則移除
        it.remove();
        }
}
// fruits 現在只包含 "Banana"
Java 的輸入/輸出與串流

用 Iterator 刪除元素(續)

  • 刪除前:

    System.out.println(fruits);
    
    [Apple, Banana]
    
  • 刪除後:

    System.out.println(fruits);
    
    [Banana]
    
  • 確保安全刪除並避免 ConcurrentModificationException

代表安全刪除的圖示

Java 的輸入/輸出與串流

重點整理

  • For-Each 迴圈
    • 支援
      • ListArrayListLinkedList
      • SetHashSetTreeSetLinkedHashSet
      • QueuePriorityQueue
      • StackStack
    • 不支援
      • Map
      • 刪除元素
  • Iterator
    • 支援
      • ListArrayListLinkedList
      • SetHashSetTreeSetLinkedHashSet
      • QueuePriorityQueue
      • StackStack
      • Map(需使用 keySet().iteratorvalues().iteratorentrySet().iterator
      • 刪除元素
Java 的輸入/輸出與串流

一起來練習吧!

Java 的輸入/輸出與串流

Preparing Video For Download...