Integrasi Pilihan Java dengan Stream::flatMap
Pemaju Java mencari cara ringkas untuk memetakan senarai objek ke objek Pilihan dan mendapatkan semula hasil pertama bukan kosong menggunakan API Stream Java 8 mungkin menghadapi cabaran.
Pendekatan intuitif untuk menggunakan things.stream().flatMap(this::resolve).findFirst() tidak boleh dilaksanakan kerana Optional tidak mempunyai kaedah stream(). Ini telah membawa kepada penerokaan penyelesaian alternatif:
Java 16
Java 16 memperkenalkan Stream.mapMulti, membolehkan penyelesaian ringkas berikut:
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .<Other>mapMulti(Optional::ifPresent) .findFirst();</code>
Java 9
Java 9 memperkenalkan Optional.stream, membenarkan penyelesaian yang lebih mudah ini:
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .flatMap(Optional::stream) .findFirst();</code>
Java 8
Dalam Java 8, pendekatan berikut menggunakan kaedah pembantu boleh digunakan:
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .flatMap(Optional::ofNullable) .findFirst(); // Helper method that converts Optional<T> to Stream<T> private static <T> Stream<T> streamOptional(Optional<T> optional) { return optional.isPresent() ? Stream.of(optional.get()) : Stream.empty(); }</code>
Atas ialah kandungan terperinci Pendekatan Pilihan Java manakah yang Terbaik untuk Memetakan Objek kepada Objek Pilihan dan Mendapatkan Hasil Bukan Kosong Pertama Melalui Strim::flatMap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!