<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Java 8 流教程 > 原文: [https://beginnersbook.com/2017/10/java-8-stream-tutorial/](https://beginnersbook.com/2017/10/java-8-stream-tutorial/) 在上一個教程中,我們學習了 java 8 中的[接口更改。在本指南中,我們將討論**流 API**,這是 **java 8** 的另一個新功能。該 API 的所有類和接口都在`java.util.stream`包中。通過使用流,我們可以對從集合,數組,輸入/輸出操作返回的數據執行各種聚合操作。在我們看到如何在 Java 中使用流 API 之前,讓我們看一個例子來理解流的使用。](https://beginnersbook.com/2017/10/java-8-interface-changes-default-method-and-static-method/) ## Java 流示例 要了解流的工作原理,讓我們在不使用流的情況下進行示例,然后我們將看到與流相同的示例。 **在不使用流**的情況下查找某些字符串 ```java import java.util.ArrayList; import java.util.List; public class Example{ public static void main(String[] args) { List<String> names = new ArrayList<String>(); names.add("Ajeet"); names.add("Negan"); names.add("Aditya"); names.add("Steve"); int count = 0; for (String str : names) { if (str.length() < 6) count++; } System.out.println("There are "+count+" strings with length less than 6"); } } ``` 輸出: ```java There are 3 strings with length less than 6 ``` **使用流**的相同示例 ```java import java.util.ArrayList; import java.util.List; public class Example{ public static void main(String[] args) { List<String> names = new ArrayList<String>(); names.add("Ajeet"); names.add("Negan"); names.add("Aditya"); names.add("Steve"); //Using Stream and Lambda expression long count = names.stream().filter(str->str.length()<6).count(); System.out.println("There are "+count+" strings with length less than 6"); } } ``` 輸出: ```java There are 3 strings with length less than 6 ``` **這些代碼有什么區別?** 兩個示例的輸出都是相同的,但是如果考慮代碼的性能,這些示例之間會有很大的不同。 **在第一個例子**中,我們迭代整個列表以找到長度小于 6 的字符串。此代碼中沒有并行性。 **在第二個例子**中,`stream()`方法返回所有名稱的流,`filter()`方法返回另一個長度小于 6 的名稱流,`count()`方法減少了這個流到結果。所有這些操作都是并行發生的,這意味著我們能夠在流的幫助下并行化代碼。 **使用流并行執行操作比不使用流**的順序執行更快。 ## 如何在 Java 中使用流 正如我們在上面的例子中看到的那樣,流的工作可以分三個階段來解釋: 1. 創建一個流 2. 在初始流上執行**中間操作**,將其轉換為另一個流,依此類推進一步的中間操作。在上面的例子中,`filter()`操作是中間操作,可以有多個中間操作。 3. 在最終流上執行**端子操作**以獲得結果。在上面的例子中,`count()`操作是終端操作。 ## Java 流函數 1. 流**不存儲**元素。它只是執行聚合操作(例如我們在上面的例子中看到的`filter()`和`count()`)來獲得所需的數據流。 2. 我們對集合,數組或任何其他數據源**執行的聚合操作不會更改**源的數據,它們只返回一個新流。例如,我們上面看到的代碼是使用流操作過濾長度小于 6 的字符串,但它沒有更改列表的元素。 3. 所有流操作本質上都是**懶惰**,這意味著它們在需要之前不會被執行。例如,如果我們想要使用流僅顯示列表的前 2 個元素,則在顯示列表的第二個元素之后,流操作將在第二次迭代結束時停止。 讓我們看幾個 Java 流的例子: ## Java 流示例 1:迭代并顯示選定的整數 ```java import java.util.stream.*; public class Example { public static void main(String[] args){ Stream.iterate(1, count->count+1) .filter(number->number%3==0) .limit(6) .forEach(System.out::println); } } ``` 輸出: ```java 3 6 9 12 15 18 ``` ## Java 流示例 2:連接兩個流 ```java import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class Example { public static void main(String[] args) { //list 1 List<String> alphabets = Arrays.asList("A","B","C"); //list 2 List<String> names = Arrays.asList("Sansa","Jon","Arya"); //creating two streams from the two lists and concatenating them into one Stream<String> opstream = Stream.concat(alphabets.stream(), names.stream()); //displaying the elements of the concatenated stream opstream.forEach(str->System.out.print(str+" ")); } } ``` 輸出: ```java A B C Sansa Jon Arya ``` #### 相關文章: 1. [Java 流`allMatch()`示例](https://beginnersbook.com/2017/11/java-8-stream-allmatch-example/) 2. [Java 流`noneMatch()`示例](https://beginnersbook.com/2017/11/java-8-stream-nonematch-example/) 3. [Java 流`anyMatch()`示例](https://beginnersbook.com/2017/11/java-8-stream-anymatch-example/)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看