Giới thiệu về Iterator

Nhập/Xuất và Streams trong Java

Alex Liu

Software Development Engineer

Làm việc với collection

  • Ví dụ HashSet dùng cho phần còn lại của video
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}
Nhập/Xuất và Streams trong Java

Dùng vòng lặp For-Each

  • Vòng lặp For-Each
    • Cú pháp: for (type x: collection){}
    • Tự động xử lý từng phần tử
    • Dùng cho nhiều collection: List, Set, Map, ...
  • Ví dụ: dùng tập fruits: [Apple, Banana].
for (String x : fruits) {
    System.out.println(x);
}
Apple
Banana
Nhập/Xuất và Streams trong Java

Duyệt collection với Iterator

  • Dùng Iterator<>: Hỗ trợ List, Set, Queue, ...
  • Import lớp Iterator
import java.util.Iterator;

// Tạo đối tượng `Iterator` tên `it` cho tập `fruits` Iterator<String> it = fruits.iterator(); // Dùng `.hasNext()` để kiểm tra còn phần tử không while (it.hasNext()) { // Dùng `.next()` để lấy phần tử System.out.print(it.next());}
Apple Banana
Nhập/Xuất và Streams trong Java

Xóa phần tử với Iterator

  • Dùng .remove() để xóa phần tử với Iterator

$$

Iterator<String> it = fruits.iterator();
while (it.hasNext()) {
    String fruit = it.next();
    if (fruit.startsWith("A")) {
        // Xóa nếu phần tử bắt đầu bằng `A`
        it.remove();
        }
}
// fruits giờ chỉ còn "Banana"
Nhập/Xuất và Streams trong Java

Xóa phần tử với Iterator (tiếp)

  • Trước khi xóa:

    System.out.println(fruits);
    
    [Apple, Banana]
    
  • Sau khi xóa:

    System.out.println(fruits);
    
    [Banana]
    
  • Đảm bảo xóa an toàn và tránh ConcurrentModificationException

Biểu tượng xóa an toàn

Nhập/Xuất và Streams trong Java

Tóm tắt

  • Vòng lặp For-Each
    • Hỗ trợ
      • List(ArrayList,LinkedList)
      • Set(HashSet,TreeSet,LinkedHashSet)
      • Queue(PriorityQueue)
      • Stack(Stack)
    • Không hỗ trợ
      • Map
      • Xóa phần tử
  • Iterator
    • Hỗ trợ
      • List(ArrayList,LinkedList)
      • Set(HashSet,TreeSet,LinkedHashSet)
      • Queue(PriorityQueue)
      • Stack(Stack)
      • Map (Phải dùng keySet().iterator, values().iterator hoặc entrySet().iterator)
      • Xóa phần tử
Nhập/Xuất và Streams trong Java

Ayo berlatih!

Nhập/Xuất và Streams trong Java

Preparing Video For Download...