Java流簡介

Java 8中引入了Stream API,用於處理對象的集合。流是支持各種方法的對象序列,可以對這些方法進行流水線處理以產生所需的結果。
Java流的功能是–

  • 流不是數據結構,而是從集合,數組或I / O通道獲取輸入。
  • 流不改變原始數據結構,它們僅根據流水線方法提供結果。
  • 每個中間操作都是延遲執行的,並因此返回一個流,因此可以對各種中間操作進行流水線處理。終端操作標記流的結尾並返回結果。

流上的不同操作-
中級操作:

  1. map: map方法用於返回一個流,該流包含將給定功能應用於此流的元素的結果。

    List number = Arrays.asList(2,3,4,5);
    
    List square = number.stream().map(x->x*x).collect(Collectors.toList());
  2. filter: filter方法用於根據作為參數傳遞的謂詞選擇元素。

    List names = Arrays.asList("Reflection","Collection","Stream");
    

List result = names.stream().filter(s->s.startsWith("S")).collect(Collectors.toList());

3. **sorted:** sorted方法用於對流進行排序。

List names = Arrays.asList("Reflection","Collection","Stream");

List result = names.stream().sorted().collect(Collectors.toList());


**終端機操作:**

1. **collect:** collect方法用於返回對流執行的中間操作的結果。

List number = Arrays.asList(2,3,4,5,3);

Set square = number.stream().map(x->x*x).collect(Collectors.toSet());

2. **forEach:** forEach方法用於迭代流的每個元素。

List number = Arrays.asList(2,3,4,5);

number.stream().map(x->x*x).forEach(y->System.out.println(y));

3. **reduce:** reduce方法用於將流的元素減少為單個值。
reduce方法將BinaryOperator用作參數。

List number = Arrays.asList(2,3,4,5);

int even = number.stream().filter(x->x%2==0).reduce(0,(ans,i)-> ans+i);

```

** 結論**

在本文中,我們簡要介紹了Java流-絕對是Java 8中最有趣的功能之一。

有許多使用Streams的更高級的示例。本文的目的只是為了快速,實用地介紹您可以使用該功能開始做些什麼,並以此作為探索和進一步學習的起點。