Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

การใช้งานเมธอด Optional.stream() ใน Java 9

เมธอด stream() ของ Optional

Java 9 เพิ่มเมธอด stream() ให้ Optional ใช้แปลง Stream ของ Optional elements ให้กลายเป็น Stream ของค่าที่มีอยู่จริง (present values)

Syntax

public Stream<T> stream()

การทำงาน

  • ถ้า Optional มีค่า -> คืน Stream ที่มี 1 element
  • ถ้า Optional ว่าง -> คืน Empty Stream

ตัวอย่าง: เปรียบเทียบ Java 8 vs Java 9

import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamMethodTest {
    public static void main(String[] args) {
        List<Optional<String>> list = Arrays.asList(
            Optional.empty(),
            Optional.of("TutorialsPoint"),
            Optional.empty(),
            Optional.of("Tutorix")
        );

        // Java 8 style
        List<String> filteredListJava8 = list.stream()
            .flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty())
            .collect(Collectors.toList());

        // Java 9 style - ใช้ Optional::stream
        List<String> filteredListJava9 = list.stream()
            .flatMap(Optional::stream)
            .collect(Collectors.toList());

        System.out.println(filteredListJava8);
        System.out.println(filteredListJava9);
    }
}

Output

[TutorialsPoint, Tutorix]
[TutorialsPoint, Tutorix]

ประโยชน์

  • โค้ดสั้นกว่าและอ่านง่ายกว่า ternary operator
  • เหมาะสำหรับ flatMap กับ Stream ของ Optionals
  • ทำงานร่วมกับ Stream API ได้ราบรื่น

สรุป

Optional.stream() เป็นวิธีสะดวกในการแปลง Optional เป็น Stream สำหรับการประมวลผลต่อเนื่องใน Pipeline