Rumah >Java >javaTutorial >Bagaimana untuk Menukar Pilihan ke Strim dalam Java 8?
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!