Rumah  >  Artikel  >  Java  >  Pendekatan Pilihan Java manakah yang Terbaik untuk Memetakan Objek kepada Objek Pilihan dan Mendapatkan Hasil Bukan Kosong Pertama Melalui Strim::flatMap?

Pendekatan Pilihan Java manakah yang Terbaik untuk Memetakan Objek kepada Objek Pilihan dan Mendapatkan Hasil Bukan Kosong Pertama Melalui Strim::flatMap?

Patricia Arquette
Patricia Arquetteasal
2024-10-24 03:03:28280semak imbas

Which Java Optionals Approach Is Best for Mapping Objects to Optional Objects and Retrieving First Non-Empty Result Via Stream::flatMap?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn