API Stream Java menawarkan penyelesaian pengekodan ringkas, tetapi terdapat senario tertentu yang mungkin menimbulkan cabaran. Satu situasi sedemikian melibatkan penukaran Pilihan
Memandangkan senarai perkara (Senaraikan
things.stream().flatMap(this::resolve).findFirst();
Walau bagaimanapun, flatMap() menjangkakan strim sebagai nilai pulangan, manakala Optional tidak menyediakan kaedah stream().
Java 16 memperkenalkan Stream.mapMulti(), mengurangkan isu ini:
Optional<Other> result = things.stream() .map(this::resolve) .<Other>mapMulti(Optional::ifPresent) .findFirst();
Java 9 memperkenalkan Optional.stream(), membolehkan penukaran langsung:
Optional<Other> result = things.stream() .map(this::resolve) .flatMap(Optional::stream) .findFirst();
Malangnya, Java 8 tidak mempunyai kaedah mudah untuk menukar Pilihan kepada Strim. Walau bagaimanapun, fungsi pembantu boleh digunakan:
static <T> Stream<T> streamopt(Optional<T> opt) { if (opt.isPresent()) return Stream.of(opt.get()); else return Stream.empty(); } Optional<Other> result = things.stream() .flatMap(t -> streamopt(resolve(t))) .findFirst();
Atas ialah kandungan terperinci Bagaimana untuk Menukar Pilihan ke Strim dalam Java 8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!