首頁  >  文章  >  Java  >  如何使用Java中的Stream函數進行流程操作

如何使用Java中的Stream函數進行流程操作

PHPz
PHPz原創
2023-06-26 14:10:111397瀏覽

Java中的Stream函數是Java 8引入的新特性,它提供了一種全新的方式來處理集合和陣列等資料集。 Stream提供了一種函數式程式設計的方式來進行流程操作,同時也大大簡化了程式碼的編寫。在本文中,我們將探討如何使用Java中的Stream函數進行流程操作。

一、什麼是Stream函數

Stream函數是Java 8引進的新功能。它為我們提供了一種函數式程式設計的方式來進行流程操作,以此來簡化我們的程式碼。 Stream函數可以用於對集合、陣列等資料結構中的元素進行操作,以此來實現我們所需的功能。

Stream函數有兩種操作模式,分別是中間操作和終止操作。中間操作可以進行多次,而終止操作將會停止流的處理並傳回一個結果或副作用。同時,Stream也具備並行處理的能力。

二、使用Stream函數進行流程運算

  1. 建立Stream

我們可以透過集合的stream()方法或陣列的Stream.of( )方法來取得流對象。例如:

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream1 = list.stream(); // 通过list对象获取stream对象
Stream<Integer> stream2 = Stream.of(1, 2, 3); // 通过Stream.of()方法获取stream对象
  1. 中間操作

Stream中提供了許多中間操作方法,這些方法可以篩選、映射、切片等操作。下面我們來逐一了解這些操作方法:

(1) filter()方法:過濾元素

List<Integer> list = Arrays.asList(1, 2, 3, 4);
Stream<Integer> stream = list.stream();
stream.filter(i -> i%2 == 0).forEach(System.out::println); // 输出2和4

(2) map()方法:映射元素

List<String> list = Arrays.asList("Java", "Python", "Ruby");
Stream<String> stream = list.stream();
stream.map(String::toLowerCase).forEach(System.out::println); // 输出java, python, ruby

(3) flatMap()方法:扁平化流

List<List<Integer>> list = Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3, 4), Arrays.asList(5, 6));
Stream<List<Integer>> stream = list.stream();
stream.flatMap(Collection::stream).forEach(System.out::println); // 输出1, 2, 3, 4, 5, 6

(4) distinct()方法:去重

List<Integer> list = Arrays.asList(1, 2, 3, 1, 2, 3);
Stream<Integer> stream = list.stream();
stream.distinct().forEach(System.out::println); // 输出1, 2, 3

(5) sorted()方法:排序

#
List<Integer> list = Arrays.asList(3, 2, 1);
Stream<Integer> stream = list.stream();
stream.sorted().forEach(System.out::println); // 输出1, 2, 3

(6) limit()方法:限制元素個數

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
stream.limit(3).forEach(System.out::println); // 输出1, 2, 3

(7) skip()方法:跳過元素

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
stream.skip(2).forEach(System.out::println); // 输出3, 4, 5

(8) peek()方法:追加元素

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream1 = list.stream();
Stream<Integer> stream2 = stream1.peek(System.out::println);
stream2.count(); // 输出1, 2, 3
  1. 終止操作

Stream中提供了許多終止操作方法,這些方法可以將流處理的結果傳回。下面我們來逐一了解這些操作方法:

(1) forEach()方法:迭代流中的元素

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
stream.forEach(System.out::println); // 输出1, 2, 3

(2) count()方法:統計元素個數

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
stream.count(); // 输出3

(3) toArray()方法:將流中的元素轉換為數組

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
Object[] array = stream.toArray();
System.out.println(Arrays.toString(array)); // 输出[1, 2, 3]

(4) reduce()方法:將流中的元素進行歸約

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
int result = stream.reduce(0, (x, y) -> x + y);
System.out.println(result); // 输出6

(5) collect()方法:將流中的元素進行收集

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
List<Integer> newList = stream.collect(Collectors.toList());
System.out.println(newList); // 输出[1, 2, 3]
  1. 並行流操作

Stream函數也提供了平行流操作的功能,可以透過parallel()方法將流轉換為平行流。並行流可以充分利用多核心CPU的處理能力,提高程式的運作效率。例如:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.parallelStream();
stream.forEach(System.out::println); // 输出1, 2, 3, 4, 5

三、總結

Stream函數是Java 8中的新特性,它提供了一種全新的方式來處理集合和陣列等資料集。透過Stream函數的中間操作和終止操作,我們可以輕鬆地篩選、映射、去重、排序、限制元素個數、跳過元素和追加元素等操作。同時,透過並行流操作,我們可以充分利用多核心CPU的處理能力,提高程式的運作效率。以上介紹的只是Stream函數的一部分功能,對於複雜的業務邏輯還需要透過應用Stream函數的各種操作方法來實現。

以上是如何使用Java中的Stream函數進行流程操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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