Rumah  >  Artikel  >  Java  >  Cari elemen pertama aliran dalam Java

Cari elemen pertama aliran dalam Java

WBOY
WBOYke hadapan
2023-09-03 10:05:03662semak imbas

Cari elemen pertama aliran dalam Java

API Stream Java ialah alat yang berkuasa untuk memproses pengumpulan data. Kes penggunaan biasa di sini memerlukan carian untuk entri awal strim yang sepadan dengan prinsip tertentu. Kami akan menyediakan beberapa cara untuk mengendalikan tugasan tersebut, bersama dengan contoh dan penjelasan kod.

Tatabahasa

Untuk mencipta elemen pertama strim Java, gunakan sintaks berikut -

Optional<T> firstElement = stream.filter(condition).findFirst();

Dalam contoh ini, simbol yang patut diberi perhatian termasuk "strim", yang merujuk kepada penghitungan elemen; "keadaan", yang menunjukkan predikat yang digunakan untuk menapis ciri ini dan akhirnya "firstElement?", objek bekas pilihan, Sifatnya membenarkannya; untuk menyimpan atau kekal kosong dengan objek pertama dihantar untuk konfigurasi tertentu itu.

Penjelasan tatabahasa

Penapis membentuk spesifikasi kompleks tentang setiap komponen berjujukan yang terdapat dalam strim. Hanya objek yang memenuhi keperluan ini yang berkaitan dengan kebimbangan berikutnya. Operasi utiliti percuma seperti findFirst menentukan item pilihan yang dikaitkan dengan kaedah penemuan ini yang mengandungi komponen aliran asas atau hanya menganggap bahawa komponen tidak sah tidak memenuhi kriteria redundansi susunan penyatuan kawal selia yang berkenaan.

Kaedah 1

Algoritma

  • Buat strim daripada koleksi elemen.

  • Gunakan penapis pada strim untuk memadankan kriteria yang diingini.

  • Gunakan kaedah findFirst untuk mendapatkan objek Pilihan bagi elemen padanan pertama.

  • Semak sama ada objek Pilihan kosong atau mengandungi nilai.

  • Jika objek Pilihan tidak kosong, gunakan kaedah dapatkan untuk mendapatkan semula elemen pertama.

Contoh

import java.util.List;
import java.util.Optional;
import java.util.function.Predicate;

public class FirstElementFinder {
   public static <T> T findFirstElement(List<T> elements, Predicate<T> condition) {
      Optional<T> firstElement = elements.stream().filter(condition).findFirst();
      return firstElement.orElse(null);
   }

   public static void main(String[] args) {
      List<Integer> numbers = List.of(1, 2, 3, 4, 5);
      Predicate<Integer> condition = number -> number > 3;
      Integer firstElement = findFirstElement(numbers, condition);
      System.out.println("First element: " + firstElement);
   }
}

Output

First element: 4

Arahan

Kami mengesyorkan anda mencipta fungsi statik yang dipanggil findFirstElement yang menerima dua input data: senarai elemen yang dipilih dan kriteria perbandingan.

Sertakan langkah memudahkan proses dalam ciri ini. Mula-mula, tukar senarai menjadi fungsi strim, kemudian gunakan penapis untuk menggunakan kriteria anda. Selepas fasa ini, kaedah findFirst memaparkan elemen padanan. Laksanakan kaedah "orElse" untuk objek pilihan untuk mengembalikan hasil batal jika tiada padanan ditemui.

Strategi yang dicadangkan ini menghasilkan hasil yang boleh dipercayai, seperti yang ditunjukkan oleh fungsi utama kami, yang menyemak integer yang lebih besar daripada 3 menggunakan prosedur yang kami nyatakan sebelum ini.

Kaedah 2

Algoritma

  • Buat strim daripada koleksi elemen.

  • Gunakan kaedah had untuk mengehadkan strim kepada satu elemen.

  • Gunakan kaedah findFirst untuk mendapatkan objek Pilihan bagi elemen pertama strim terhad.

  • Semak sama ada objek Pilihan kosong atau mengandungi nilai.

  • Jika objek Pilihan tidak kosong, gunakan kaedah dapatkan untuk mendapatkan semula elemen pertama.

Contoh

import java.util.List;
import java.util.Optional;

public class FirstElementFinder {
   public static <T> T findFirstElement(List<T> elements) {
      Optional<T> firstElement = elements.stream().limit(1).findFirst();
      return firstElement.orElse(null);
   }

   public static void main(String[] args) {
      List<String> names = List.of("Alice", "Bob", "Charlie");
      String firstElement = findFirstElement(names);
      System.out.println("First element: " + firstElement);
   }
}

Output

First element: Alice

Arahan

Untuk membawa lebih kejelasan dan gaya kepada penjelasan proses kami - teknik kami memerlukan membina modul statik yang dipanggil findFirstElement yang memerlukan penerimaan koleksi yang kebanyakannya terdiri daripada elemen sebagai hujahnya apabila dipanggil. Dalam logik modul ini terdapat langkah-langkah seperti menukar dari List -> Stream; mengehadkan Stream -> Stream; (null), kemudian pemprosesan susulan. Untuk contoh yang jelas dalam main(), gunakan dengan rentetan yang terkandung dalam senarai lain ditunjukkan secara berasingan.

Kaedah 3

Algoritma

  • Buat strim daripada koleksi elemen.

  • Gunakan kaedah penapisan untuk memadankan kriteria yang dikehendaki.

  • Gunakan kaedah findFirst untuk mendapatkan objek Pilihan bagi elemen padanan pertama.

  • Semak sama ada objek Pilihan kosong atau mengandungi nilai.

  • Jika objek Pilihan tidak kosong, gunakan kaedah dapatkan untuk mendapatkan semula elemen pertama.

  • Kod boleh laku penuh untuk kaedah 3 -

Contoh

import java.util.Arrays;
import java.util.Optional;
import java.util.function.Predicate;

public class FirstElementFinder {
   public static <T> T findFirstElement(T[] elements, Predicate<T> condition) {
      Optional<T> firstElement = Arrays.stream(elements).filter(condition).findFirst();
      return firstElement.orElse(null);
   }

   public static void main(String[] args) {
      String[] fruits = {"Apple", "Banana", "Cherry"};
      Predicate<String> condition = fruit -> fruit.startsWith("B");
      String firstElement = findFirstElement(fruits, condition);
      System.out.println("First element: " + firstElement);
   }
}

Output

First element: Banana

Arahan

Elemen padanan pertama tatasusunan boleh didapati menggunakan operasi statik findFirstElement. Ciri ini memerlukan elemen yang berkaitan dan kriteria carian. Penilaian awal kaedah melibatkan penghuraian dengan Arrays.stream, menukar koleksi asal komponen ke dalam format strim, dan kemudian menggunakan proses utama seperti kaedah penapis untuk melaksanakan keperluan penapisan kami dan findFirst(). Untuk mengurus orElse kosong, tetapkannya kepada null. Objek pilihan dalam tahap ini boleh mengelakkan jurang atau masalah dalam penggunaan praktikal.

Jika kita hanya mahu buah-buahan yang bermula dengan "B", kita boleh menghantar dalam tatasusunan buah dan "B" sebagai parameter tetapan semasa panggilan. Pelaksanaan kaedah findFirstElement kami akan mengembalikan elemen padanan pertama yang memenuhi keperluan ini, membolehkan seseorang memanfaatkan koleksi data yang telah ditubuhkan sebelum ini tetapi kini lengkap.

Kaedah 4

Algoritma

  • Buat strim daripada koleksi elemen.

  • Gunakan kaedah findFirst untuk mendapatkan objek pilihan yang mengandungi elemen pertama strim.

  • Semak sama ada objek Pilihan kosong atau mengandungi nilai.

  • Jika objek Pilihan tidak kosong, gunakan kaedah dapatkan untuk mendapatkan semula elemen pertama.

示例

import java.util.Optional;
import java.util.stream.Stream;

public class FirstElementFinder {
   public static <T> T findFirstElement(Stream<T> stream) {
      Optional<T> firstElement = stream.findFirst();
      return firstElement.orElse(null);
   }

   public static void main(String[] args) {
      Stream<Integer> numbers = Stream.of(1, 2, 3, 4, 5);
      Integer firstElement = findFirstElement(numbers);
      System.out.println("First element: " + firstElement);
   }
}

输出

First element: 1

说明

在此方法中,我们创建一个静态方法 findFirstElement,它将元素流作为输入参数。作为该方法执行的一部分,我们利用 findFirst 从流中获取初始元素。在Optional对象表示空值的情况下,我们通过orElse选择null。在 main 方法中,我们演示了 findFirstElement 与整数流的用法。

结论

为了确定如何通过 Java 编程语言访问流的初始元素,最重要的是我们研究各种可用的方法;特别是因为每个选择都为这个普遍存在的问题提供了可接受的解决方案 - 取决于其必要的目标。本文旨在通过解释示例来提供对每种技术的见解,同时确保所获得的理解可以在用户的​​个人项目中自信地运用。我们鼓励在选择专门针对其应用程序类型定制的方法之前评估性能优化、可持续性和编码效率等关键方面。

Atas ialah kandungan terperinci Cari elemen pertama aliran dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam