Java 8 流及其操作


Java 中,流是在 Java 8 中引入的。它表示元素的集合,並支援對這些集合執行函式式操作。在這裡,我們談論的是像 陣列列表集合 這樣的集合。

Stream API 簡單地將源元素透過各種內建方法傳遞,以返回所需的結果。在本文中,我們將討論可以在 Java 流上執行的不同操作。

Java 8 流上的操作

我們可以對 Java 流執行兩種型別的操作:

  • 中間操作 - 它們使用 filter()、map()、limit()、skip() 等方法處理輸入流的元素。

  • 終止操作 - 它們觸發中間操作以生成非流結果,例如列印、計數和儲存。終止操作藉助 forEach()、collect()、toArray() 等方法執行。

Java 流的方法統稱為 高階函式。中間操作和終止操作的主要區別在於,終止操作不能連結在一起,而中間操作可以連結。

Java 流上的過濾操作

在下面的 Java 程式中,我們將演示 Java 流的過濾操作。為此,我們將使用 filter() 方法過濾大於 10 的數字,使用 limit() 方法限制輸出的大小,並使用 forEach() 方法列印結果。

import java.util.*;
public class Example1 {
   public static void main(String[] args) {
      // creating a list of numbers
      List<Integer> numbers = Arrays.asList(5, 21, 32, 4, 13, 41, 10);
      // printing all numbers in the list
      System.out.println("Numbers in the given List : " + numbers);
      System.out.println("List of numbers greater than 10: ");
      // filtering the numbers greater than 10 from list
      numbers.stream().filter(nums -> nums > 10)
         // limiting the result to 2 only
         .limit(2)
         // printing the result
         .forEach(System.out::println);
   }
}

執行此程式碼時,將產生以下結果:

Numbers in the given List : [5, 21, 32, 4, 13, 41, 10]
List of numbers greater than 10: 
21
32

Java 流上的排序操作

下面的 Java 程式顯示瞭如何執行流的排序。為此,我們將使用 sorted() 方法按升序對元素進行排序,然後使用 forEach() 方法列印結果。

import java.util.*;
public class Example2 {
   public static void main(String []args) {
      // creating a list of numbers
      List<String> terms = Arrays.asList("Objects", "Classes", "Methods", "Constructors", "Abstract");
      System.out.println("List after Sorting: ");
      // Sorting the elements of list
      terms.stream()
         .sorted()
         // printing the result
         .forEach(System.out::println);
   }
}

執行後,將顯示以下輸出:

List after Sorting: 
Abstract
Classes
Constructors
Methods
Objects

startsWith() 方法的使用

在這個 Java 程式中,我們將列印以字元“C”開頭的流元素。我們將為此操作使用 filter()、startsWith() 和 collect() 方法。

import java.util.*;
import java.util.stream.*;
public class Example3 {
   public static void main(String []args) {
      // creating a list of numbers
      List<String> terms = Arrays.asList("Objects", "Classes", "Methods", "Constructors", "Abstract");
      System.out.println("Original List: " + terms);
      System.out.println("List after filtering: ");
      // Filtering the elements that start with 'C'
      List<String> output = terms.stream()
                     .filter(x -> x.startsWith("C"))
                     .collect(Collectors.toList());
      // printing the result                        
      System.out.println(output);
   }
}

以上程式碼的輸出如下:

Original List: [Objects, Classes, Methods, Constructors, Abstract]
List after filtering: 
[Classes, Constructors]

distinct() 方法的使用

下面的 Java 程式說明了如何僅使用 distinct() 方法從元素流中列印不同的元素。

import java.util.*;
public class Example4 {
   public static void main(String[] args) {
      // creating a list of numbers
      List<Integer> numbers = Arrays.asList(55, 55, 44, 34, 89, 89, 10, 10);
      System.out.println("Distinct elements from the list: ");
      // removing duplicate numbers from the list 
      numbers.stream()
        .distinct()
        .forEach(System.out::println);
   }
}

將獲得以下輸出:

Distinct elements from the list: 
55
44
34
89
10

更新於: 2024-08-01

1K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.