Menjadi Ringkas dengan Pilihan dan Strim Java 8::flatMap
Apabila bekerja dengan strim Java 8, mengubah Senarai
Penyelesaian Java 16
Java 16 memperkenalkan Stream.mapMulti, membolehkan lebih banyak pendekatan ringkas:
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .<Other>mapMulti(Optional::ifPresent) .findFirst();</code>
Penyelesaian Java 9
JDK 9 menambah Optional.stream, memudahkan tugas:
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .flatMap(Optional::stream) .findFirst();</code>
Penyelesaian Java 8
Dalam Java 8, pendekatan berikut boleh diambil:
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty()) .findFirst();</code>
Menggunakan fungsi pembantu untuk menukar Pilihan kepada Strim:
<code class="java">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();</code>
Atas ialah kandungan terperinci Bagaimana untuk Menukar Senarai Objek dengan Cekap kepada Pilihan dalam Aliran Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!