Stream.filter() ialah kaedah dalam Java yang kami gunakan semasa bekerja dengan strim. Ia merentasi semua elemen yang hadir dan mengalih keluar atau menapis semua elemen yang tidak sepadan dengan keadaan yang ditentukan melalui hujah yang penting. Ini pada asasnya ialah operasi yang berlaku di antara antara muka aliran. Fungsi ini mengembalikan aliran keluaran yang mempunyai unsur aliran input sepadan dengan keadaan yang diberikan.
Mulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Argumen yang diluluskan dengan penapis() akan menjadi predikat tanpa kewarganegaraan dan digunakan pada setiap elemen untuk mengenal pasti sama ada ia perlu disertakan atau tidak. Kita boleh lulus ungkapan lambda juga melalui ini kerana predikat berada di bawah kategori antara muka berfungsi. Output mengandungi strim baharu yang boleh digunakan untuk sebarang operasi lain yang berkaitan dengan mana-mana strim.
Sintaks:
Stream<T> filter(Predicate<? super T> condition)d
Predikat mewakili antara muka berfungsi dan menunjukkan keadaan yang kami gunakan untuk menapis elemen yang tidak sepadan dengan strim.
Mari kita ambil beberapa contoh untuk memahami kefungsian fungsi Java stream().
Kod:
import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> arr = Arrays.asList(11, 12, 13, 14, 15, 16, 17, 18, 19, 20); arr.stream() .filter(i -> i % 3 == 0) .forEach(System.out::println); } }
Output:
Penjelasan: Ini adalah contoh yang sangat asas dan mudah yang menunjukkan cara menggunakan fungsi penapis aliran java. Dalam contoh ini, kami mengisytiharkan tatasusunan nombor rawak dan memberikannya kepada Senarai. Kemudian kami menggunakan penapis strim untuk menapis semua elemen dalam tatasusunan yang diberikan yang memenuhi syarat yang diberikan, iaitu semua nombor dalam tatasusunan yang memberikan modulus 3 sebagai 0 ditapis dan dipaparkan dalam output.
Kod:
import java.util.Arrays; import java.util.List; import java.util.function.Predicate; public class Main { public static void main(String[] args) { List<Integer> arr = Arrays.asList(21, 22, 23, 24, 25, 26, 27, 28, 29, 30); Predicate<Integer> condition = new Predicate<Integer>() { @Override public boolean test(Integer i) { if (i % 4 == 0) { return true; } return false; } }; arr.stream().filter(condition).forEach(System.out::println); } }
Output:
Penjelasan: Dalam contoh ini, kami mula-mula mengisytiharkan tatasusunan input yang terdiri daripada set nombor rawak dan memberikannya senarai. Di sini kami juga menunjukkan cara menggunakan dan mengisytiharkan predikat bersama-sama dengan fungsi penapis strim dengan mula-mula mencipta objek yang sama dengan syarat nama. Kemudian kelas ujian nama yang mempunyai parameter input integer saya dicipta di mana kita menyemak modulus 4 tatasusunan yang diberikan. Fungsi ini mengembalikan nilai boolean benar jika modul 4 mengembalikan 0 dan palsu sebaliknya. Dengan mengambil nilai pulangan ini, fungsi strim kemudiannya digunakan untuk mengambil elemen daripada tatasusunan yang keadaannya adalah benar.
Kod:
import java.util.*; public class Example { public static void main(String[] args) { //Array creation List<String> arr1 = Arrays.asList("trial", "simple", "node"); //Calling usingFiltOutput function List<String> op = usingFiltOutput(arr1, "node"); //for loop to print array for (String arr : op) { System.out.print(arr); System.out.print("\n"); } } private static List<String> usingFiltOutput(List<String> arr2, String filter) { List<String> op = new ArrayList<>(); for (String arr1 : arr2) { if (!"node".equals(arr1)) { op.add(arr1); } } return op; } }
Output:
Penjelasan: Dalam contoh di atas, kami menunjukkan penapisan elemen tatasusunan di mana kami menapis elemen "nod" dengan menggunakan kaedah penapis strim
Kod:
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<Car> listCar = new ArrayList<>(); listCar.add(new Car("Maruti", 350000)); listCar.add(new Car("Toyota", 400000)); listCar.add(new Car("Mahindra", 500000)); listCar.add(new Car("Honda", 600000)); // displaying all cars with cost more than 4lakh listCar.stream().filter(c -> (c.getID() > 400000)) .forEach(c -> System.out.println(c.getCompany())); } } class Car { private String company; private int ID; public Car() { } public Car(String n, int a) { this.company = n; this.ID = a; } public String getCompany() { return company; } public void setCompany(String company) { this.company = company; } public int getID() { return ID; } public void setID(int ID) { this.ID = ID; } }
Output:
Penjelasan: Dalam contoh ini, kita akan melihat sejenis aplikasi masa nyata di mana senarai syarikat kereta yang berbeza dan kos asasnya telah diperuntukkan kepada senarai tatasusunan seperti yang ditunjukkan. Kemudian kami mentakrifkan beberapa kaedah di bawah untuk mengambil nilai individu daripada senarai tatasusunan. kaedah getcost digunakan untuk mendapatkan kos kereta tertentu itu, dan getCompany digunakan untuk mendapatkan nama syarikat daripada senarai tatasusunan input. Kemudian dalam fungsi utama, kami menggunakan fungsi penapis aliran Java untuk mengambil hanya nama syarikat kereta yang kos anggarannya melebihi Rs.400000.
Kod:
import java.util.*; import java.util.stream.Collectors; class Example{ int pro_id; String pro_name; float pro_cost; public Example(int pro_id, String pro_name, float pro_cost) { this.pro_id = pro_id; this.pro_name = pro_name; this.pro_cost = pro_cost; } } public class JavaStreamExample { public static void main(String[] args) { List<Example> productsList = new ArrayList<Example>(); //Here we are listing the products productsList.add(new Example(1,"Shirt",1500f)); productsList.add(new Example(2,"Long Sleeve Top",1000f)); productsList.add(new Example(3,"Crop Top",1600f)); productsList.add(new Example(4,"Jeans",2100f)); productsList.add(new Example(5,"Skirt",1800f)); List<Float> pricesList = productsList.stream() .filter(p ->p.pro_cost> 1500) .map(pm ->pm.pro_cost) .collect(Collectors.toList()); System.out.println(pricesList); } }
Output:
Penjelasan: Dalam contoh ini, kami mula-mula mengisytiharkan beberapa parameter berkenaan produk kedai pakaian, seperti id produk, nama dan kos. Dan dengan menggunakan ArrayList, kami menambah produk tertentu ke dalamnya bersama-sama dengan parameternya. Akhirnya, dengan menggunakan penapis aliran java, kami menapis beberapa produk yang kosnya melebihi Rs.1500. Ini menunjukkan aplikasi masa nyata kaedah ini.
Kami melihat semua jenis gabungan yang boleh digunakan penapis aliran Java untuk menapis elemen tertentu dalam tatasusunan berdasarkan syarat yang kami berikan. Ia juga boleh digabungkan dengan strim Java, senarai tatasusunan, koleksi dan banyak lagi berdasarkan keperluan.
Atas ialah kandungan terperinci Penapis Strim Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!