Giới thiệu về Streams

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

Alex Liu

Software Development Engineer

Làm việc với Streams

  • Java Streams

    • Xử lý collection theo kiểu hàm và cải thiện hiệu năng với dữ liệu lớn
    • Collection hỗ trợ:
      • List (vd: ArrayList, LinkedList)
      • Set (vd: HashSet, TreeSet)
      • Map (Keys/ValuesStreams) (vd: HashMap, TreeMap)
      • Array (qua Arrays.stream())
  • ArrayList ví dụ tên names dùng cho phần còn lại của video

    names: ["Alice", "Bob", "Charlie", "David"]
    
Nhập/Xuất và Streams trong Java

Dùng lambda với Stream

  • Biểu thức lambda
    • Cú pháp: (parameters) -> { expression }
names.forEach(
    // `name` is a parameter representing each element in the list
    name -> 
        // This is the expression executed for each element.
        System.out.println(name));
Alice 
Bob 
Charlie 
David
Nhập/Xuất và Streams trong Java

Tạo một Stream

  • Chuyển collection thành Stream

    • Gọi .stream() trên collection
    • Hỗ trợ List, SetQueue
  • Import lớp Stream

    import java.util.stream.Stream;
    
  • Chuyển danh sách mẫu names thành stream và dùng .foreach() để truy cập từng phần tử
    Stream<String> stream = names.stream();
    stream.forEach(name -> System.out.println(name));
    
Nhập/Xuất và Streams trong Java

Lọc dữ liệu với Streams

  • Dùng .filter() để chọn phần tử
    • Chỉ giữ các phần tử khớp
  • Chuyển danh sách mẫu names thành stream
    Stream<String> stream = names.stream();
    
  • Dùng .filter() để lấy phần tử bắt đầu bằng A.forEach() để in ra
    stream
      .filter(name -> name.startsWith("A"))
      .forEach(name -> System.out.println(name));
    
  • Kết quả lọc: Alice
Nhập/Xuất và Streams trong Java

Đếm phần tử với Streams

  • Dùng .count() để đếm phần tử

    • Trả về long
  • Chuyển danh sách mẫu names thành stream

    Stream<String> stream = names.stream();
    
  • Dùng .filter() để lấy phần tử bắt đầu bằng B.count() để đếm

    long count = names.stream()
      .filter(name -> name.startsWith("B"))
      .count();
    
  • Kết quả đếm: 1 (chỉ có Bob bắt đầu bằng B)

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

Khi nào dùng Streams

  • Khi nên dùng Streams:
    • Dữ liệu lớn: Giảm chi phí hiệu năng
    • Lập trình hàm: Dễ đọc hơn vòng lặp
    • Lọc và biến đổi: Mã gọn hơn
  • Khi KHÔNG nên dùng Streams:
    • Khi cần sửa đổi collection gốc
    • Vòng lặp đơn giản có side effect
Nhập/Xuất và Streams trong Java

Hãy thực hành!

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

Preparing Video For Download...