Introduction to Iterators

Input/Output และ Streams ใน Java

Alex Liu

Software Development Engineer

การทำงานกับ Collection

  • ตัวอย่าง 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}
Input/Output และ Streams ใน Java

การใช้ For-Each loop

  • For-Each loop
    • รูปแบบ: for (type x: collection){}
    • ประมวลผลแต่ละ element โดยอัตโนมัติ
    • รองรับหลาย Collection: List, Set, Map และอื่น ๆ
  • ตัวอย่าง: ใช้ชุด fruits: [Apple, Banana].
for (String x : fruits) {
    System.out.println(x);
}
Apple
Banana
Input/Output และ Streams ใน Java

การวนผ่าน Collection ด้วย Iterator

  • ใช้ Iterator<>: รองรับ List, Set, Queue และอื่น ๆ
  • นำเข้า class Iterator
import java.util.Iterator;

// Create `Iterator` object named `it` for sample set `fruits` Iterator<String> it = fruits.iterator(); // Use `.hasNext()` method checks if more elements exist while (it.hasNext()) { // User `.next()` retrieves the element System.out.print(it.next());}
Apple Banana
Input/Output และ Streams ใน Java

การลบ element ด้วย Iterator

  • ใช้ .remove() เพื่อลบ element ด้วย Iterator

$$

Iterator<String> it = fruits.iterator();
while (it.hasNext()) {
    String fruit = it.next();
    if (fruit.startsWith("A")) {
        // Remove element if element startsWith `A`
        it.remove();
        }
}
// fruits now contains only "Banana"
Input/Output และ Streams ใน Java

การลบ element ด้วย Iterator (ต่อ)

  • ก่อนลบ:

    System.out.println(fruits);
    
    [Apple, Banana]
    
  • หลังลบ:

    System.out.println(fruits);
    
    [Banana]
    
  • ช่วยให้ลบข้อมูลได้อย่างปลอดภัยและป้องกัน ConcurrentModificationException

ไอคอนแทนการลบที่ปลอดภัย

Input/Output และ Streams ใน Java

สรุป

  • For-Each loop
    • รองรับ
      • List(ArrayList,LinkedList)
      • Set(HashSet,TreeSet,LinkedHashSet)
      • Queue(PriorityQueue)
      • Stack(Stack)
    • ไม่รองรับ
      • Map
      • Element Removal
  • Iterator
    • รองรับ
      • List(ArrayList,LinkedList)
      • Set(HashSet,TreeSet,LinkedHashSet)
      • Queue(PriorityQueue)
      • Stack(Stack)
      • Map (ต้องใช้ keySet().iterator, values().iterator หรือ entrySet().iterator)
      • Element Removal
Input/Output และ Streams ใน Java

มาฝึกกันเถอะ!

Input/Output และ Streams ใน Java

Preparing Video For Download...