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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP