首頁  >  文章  >  Java  >  Java流過濾器

Java流過濾器

王林
王林原創
2024-08-30 15:37:31920瀏覽

Stream.filter() 是我們在處理流程時使用的 Java 方法。它遍歷所有存在的元素,並透過重要參數刪除或過濾掉所有與指定條件不符的元素。這基本上是在流接口之間發生的操作。此函數傳回一個輸出流,該輸出流具有與給定條件相符的輸入流元素。

開始您的免費軟體開發課程

網頁開發、程式語言、軟體測試及其他

透過filter()傳遞的參數將是一個無狀態謂詞,並應用於每個元素來決定是否應該包含它。我們也可以透過它傳遞 lambda 表達式,因為謂詞屬於函數式介面類別。輸出包含一個新流,可用於與任何流相關的任何其他操作。

文法:

Stream<T> filter(Predicate<? super T> condition)d

Predicate 代表一個函數式接口,顯示了我們用來過濾掉與流不匹配的元素的條件。

實作 Java 流過濾器的範例

讓我們透過一些範例來了解 Java Stream() 函數的功能。

範例#1

代碼:

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);
}
}

輸出:

Java流過濾器

說明:這是一個非常基本且簡單的範例,展示如何使用java流過濾器功能。在此範例中,我們聲明一個隨機數數組並將它們分配給一個清單。然後我們使用流過濾器過濾掉給定數組中滿足給定條件的所有元素,即數組中所有以 3 為 0 模數的數字都將被過濾並顯示在輸出中。

範例#2

代碼:

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);
}
}

輸出:

Java流過濾器

說明: 在此範例中,我們首先聲明一個由一組隨機數字組成的輸入數組,並為它們分配一個列表。在這裡,我們還展示瞭如何透過首先建立具有相同名稱條件的物件來使用和聲明謂詞以及流過濾器函數。然後建立一個名稱為 test 的類,其輸入參數為整數 I,我們在其中檢查給定數組的 4 的模數。如果 4 的模數傳回 0,則此函數傳回布林值 true,否則傳回 false。透過取得此回傳值,然後使用流函數從條件為 true 的陣列中取得元素。

範例#3

代碼:

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;
}
}

輸出:

Java流過濾器

說明:在上面的範例中,我們展示了數組元素的過濾,其中我們使用流過濾器方法過濾元素「節點」

範例#4

代碼:

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;
}
}

輸出:

Java流過濾器

說明: 在這個範例中,我們將看到一種即時應用程序,其中不同公司的汽車及其基本成本的列表已分配給數組列表,如圖所示。然後我們定義下面的一些方法來從陣列列表中取得各個值。 getcost 方法用於取得該特定汽車的成本,而 getCompany 用於從輸入陣列清單中取得公司名稱。然後在主函數中,我們使用 Java 流過濾器函數只獲取那些大約成本低於 400000 盧比的汽車公司名稱。

範例#5

代碼:

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);
}
}

輸出:

Java流過濾器

說明: 在這個例子中,我們先聲明一些關於服飾店產品的參數,例如產品 id、名稱和成本。透過使用 ArrayList,我們將某些產品及其參數新增至其中。最後,透過使用java流過濾器,我們過濾掉了一些成本在1500盧比以上的產品。這展示了該方法的即時應用。

結論

我們看到了 Java 流過濾器可用於根據我們給出的條件過濾掉數組中某些元素的所有不同類型的組合。它還可以根據需要與 Java 流、陣列列表、集合等結合使用。

以上是Java流過濾器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn