เมธอดใหม่ 4 ตัวใน Stream API
Java 9 เพิ่มเมธอดให้ Stream interface: iterate(), ofNullable(), takeWhile(), dropWhile()
1. iterate() - แทน for-loop
เพิ่ม Predicate parameter สำหรับเงื่อนไขหยุด
Stream.iterate(1, i -> i < 5, i -> i + 1).forEach(System.out::println); // Output: 1 2 3 4
2. ofNullable() - จัดการ Null Safety
คืน Stream ของ element ถ้าไม่ใช่ null, ไฉนนั้น Empty Stream
String str = "TutorialsPoint"; Stream.ofNullable(str).forEach(System.out::println); // Output: TutorialsPoint
3. takeWhile() - เอา Prefix ที่ Match
รับ elements จากซ้ายไปขวาจนกว่า predicate จะเป็น false
Stream.of(1, 2, 3, 4, 5).takeWhile(i -> i < 5).forEach(System.out::println); // Output: 1 2 3 4
4. dropWhile() - ข้าม Prefix แล้วเอาส่วนที่เหลือ
ข้าม elements ที่ match predicate จากซ้าย แล้วคืนส่วนที่เหลือ
Stream.of(3, 2, 1, 4, 6, 7, 8, 9, 10).dropWhile(i -> i < 5).forEach(System.out::println); // Output: 6 7 8 9 10
สรุป
| Method | วัตถุประสงค์ |
|---|---|
| iterate(seed, hasNext, next) | Finite stream generation เหมือน for-loop |
| ofNullable(value) | Null-safe stream creation |
| takeWhile(predicate) | Take prefix matching predicate |
| dropWhile(predicate) | Drop prefix, take remaining |
เมธอดเหล่านี้ทำให้ Stream API มีความสามารถในการควบคุม flow และจัดการ null ดียิ่งขึ้น