Java Stream API 過濾器


stream 過濾器函式返回一個由滿足指定謂詞的此 stream 的項組成的 stream。它是一箇中間操作。這些操作始終是惰性的,即執行過濾器函式或其他中間操作實際上不會過濾任何內容;相反,它會生成一個新的 stream,當遍歷時,它包含滿足提供的謂詞的初始 stream 的項。

語法

Stream<T> filter(Predicate<? super T> predicate)

當 T 是謂詞的輸入型別,stream 是一個介面時。

返回型別

一個新的 stream。

實現

  • 消除可以分為 0 到 10 之間的一系列數字的專案。

  • 刪除在特定索引處以大寫字母開頭的條目。

  • 刪除以特定字母結尾的元件。

示例 1:filter() 方法,用於過濾可被 5 整除的元素的操作

// Java Program to get a Stream Consisting of the Elements

import java.util.*;
public class Example {
   public static void main(String[] args){
      List<Integer> list = Arrays.asList(3, 4, 6, 12, 20);
      list.stream()
         .filter(num -> num % 5 == 0)
         .forEach(System.out::println);
   }
}

輸出

20

示例 2:filter() 方法,用於過濾索引 1 處有大寫字母的元素的操作

// Java Program to Get Stream Consisting of Elements

import java.util.stream.Stream;
public class Example  {
   public static void main(String[] args) {
      Stream<String> stream = Stream.of("class", "FOR", "QUIZ", "waytoclass");
      stream.filter(str -> Character.isUpperCase(str.charAt(1)))
         .forEach(System.out::println);
   }
}

輸出

FOR
QUIZ

示例 3:filter() 方法,用於過濾以自定義字母結尾的元素的操作

// Java Program to Get a Stream Consisting of Elements
import java.util.stream.Stream;
public class Example {

   public static void main(String[] args){
      Stream<String> stream = Stream.of("Class", "FOR", "Quiz", "WaytoClass");
      stream.filter(str -> str.endsWith("s"))
      .forEach(System.out::println);
   }
}

輸出

Class
WaytoClass

結論

利用 filter() 方法是改進我們的 Java 程式碼功能的一種方法。與強制性或有條理的方法相反。但是,在使用 filter() 函式時,有一些需要注意的事項。

例如,連結多個 filter 方法會帶來使程式碼執行速度變慢的風險。這是因為可以建立一個包含滿足謂詞條件的元素的新 stream 作為中間操作。因此,減少 filter() 呼叫次數的關鍵是將謂詞合併到一個句子中。

更新於: 2023-08-01

237 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.