日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 用流创建流_成为Java流大师–第1部分:创建流

發布時間:2023/12/3 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 用流创建流_成为Java流大师–第1部分:创建流 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java 用流創建流

在許多情況下,聲明性代碼(例如,具有Streams的功能組合)提供了出色的代碼指標。 通過該動手實驗文章系列進行編碼,并成為Java Streams的主教練,從而成為一名更好的Java程序員。

Streams的整個想法是代表一個數據流經的管道,并且管道的功能將對數據進行操作。 這樣,可以表達對元素流的功能風格的操作。 本文是五分之一題,您將直接學習如何成為流大師。 我們從基本的流示例開始,然后進行更復雜的任務,直到您知道如何將標準Java流連接到Cloud中的數據庫。

Streams的整個想法是代表一個數據流經的管道,并且管道的功能將對數據進行操作。 這樣,可以表達對元素流的功能風格的操作。 本文是五分之一題,您將直接學習如何成為流大師。 我們從基本的流示例開始,然后進行更復雜的任務,直到您知道如何將標準Java流連接到Cloud中的數據庫。

一旦完成了所有五篇文章,您將能夠大幅度減少代碼庫,并知道如何在一瞬間為整個應用程序編寫純Java代碼。

這是即將發表的文章的摘要:

  • 第1部分: 創建流
  • 第2部分: 中級操作
  • 第三部分:終端操作
  • 第4部分:數據庫流
  • 第5部分:使用流創建數據庫應用程序

由于我們堅信“邊干邊學”的概念,因此該系列由GitHub存儲庫進行了補充,該存儲庫包含分為5個單元的Stream練習-每個單元對應于文章的主題。 README文件中提供了有關如何使用源代碼的說明。

什么是Java流?

Java Stream接口最初是在Java 8中引入的,它與lambda一起成為Java開發的里程碑,因為它極大地促進了聲明性(功能性)編程風格。 如果您想了解更多有關聲明式編碼的優勢,請參考本文 。

可以將Java Stream可視化為數據流經的管道(請參見下圖)。 管道的功能將通過例如過濾,映射和分類項目來對數據進行操作。 最后,可以執行終端操作以收集首選數據結構(例如
List , Array或Map 。 需要注意的重要一點是,流只能使用一次。

流管道包含三個主要部分; 流源,中間操作(零到很多)和終端操作。

讓我們看一個例子,以了解我們將在整個系列中教的內容。 我們鼓勵您閱讀下面的代碼,并嘗試弄清楚打印語句將導致的結果,然后再閱讀下一段。

List <String> list = Stream.of("Monkey", "Lion", "Giraffe","Lemur").filter(s -> s.startsWith("L")).map(String::toUpperCase).sorted().collect(toList()); System.out.println(list);

由于Stream API具有描述性,并且通常使用起來非常直觀,因此無論您之前是否遇到過這些操作,您都可能會對這些操作的含義有很好的了解。 我們從包含四個字符串的List流開始,每個字符串代表非洲動物。 然后,這些操作會過濾出以字母“ L”開頭的元素,將其余元素轉換為大寫字母,然后以自然順序(在這種情況下表示字母順序)對其進行排序,最后將它們收集到List 。 因此,產生輸出[“LEMUR”, “LION”] 。

重要的是要理解,流是“惰性的”,即終端操作是“請求”元素的(在這種情況下,
.collect()語句)。 如果終端操作僅需要一個元素(例如,終端操作.findFirst() ),則最多.findFirst()有一個元素到達終端操作,并且提醒元素(如果有的話)將永遠不會產生。資源。 這也意味著僅創建流通常是一種便宜的操作,而消費它可能會很昂貴,具體取決于流管道和流中潛在元素的數量。

在這種情況下,流源是一個List盡管許多其他類型也可以充當數據源。 我們將在本文的其余部分中介紹一些最有用的源替代方法。

流主要適合于處理對象的集合,并且可以對任何類型T元素進行操作。 盡管存在三種特殊的Stream實現; IntStream , LongStream和DoubleStream僅限于處理相應的原始類型。

可以通過以下方式調用Stream.empty()來生成任何這些類型的空Stream:

Stream <T> Stream.empty() IntStream IntStream.empty() LongStream LongStream.empty() DoubleStream DoubleStream.empty()

在某些情況下,空流確實很方便,但是大多數時候,我們對用元素填充流感興趣。 這可以通過多種方式來實現。 我們將從IntStream的特殊情況入手,因為它提供了多種有用的方法。

一個基本情況是在少量項目上生成流。 這可以通過使用IntStream.of()列出整數來完成。 下面的代碼產生元素1、2和3的簡單流。

IntStream oneTwoThree = IntStream.of(1, 2, 3);

如果項目數量增加,手動列出所有元素可能很乏味。 如果我們對某個范圍內的值感興趣,則命令.rangeClosed()更有效。 該操作包含所有內容,這意味著以下代碼將生成從1到9的所有元素的流。

IntStream positiveSingleDigits = IntStream.rangeClosed( 1 , 9 );

.iterate()甚至是更強大的命令,它可以在包括哪些數字方面提供更大的靈活性。 下面,我們顯示一個示例,說明如何使用它生成具有2的冪的所有數字的Stream。

IntStream powersOfTwo = IntStream.iterate( 1 , i -> i * 2 );

還有幾種可能更意外的方式來生成Stream。 chars()方法可用于流式處理
String ,在這種情況下為元素“ A”,“ B”和“ C”。

IntStream chars = "ABC" .chars();

還有一種生成隨機整數流的簡單方法。

IntStream randomInts = new Random().ints();

流現有數據收集是另一種選擇。 我們可以流式傳輸現有Array的元素,或者選擇使用Stream.of()手動列出項目,如前所示并在下面重復。

String[] array = {"Monkey", "Lion", "Giraffe", "Lemur"}; Stream <String> stream2 = Stream.of(array);Stream <String> stream = Stream.of("Monkey", "Lion", "Giraffe", "Lemur");

流任何Collection也非常簡單。 以下示例演示了如何使用簡單命令流式傳輸List或Set
.stream() 。

List <String> list = Arrays.asList("Monkey", "Lion", "Giraffe", "Lemur"); Stream <String> streamFromList = list.stream();Set set = new HashSet<>(list); Stream <String> streamFromSet = set.stream();

有時,流式傳輸文本文件的內容也很有用。 以下命令將提供一個Stream ,將引用文件中的每一行作為單獨的元素保存。

Stream <String> lines = Files.lines(Paths.get("file.txt"));

現在,我們已經使您熟悉了創建Stream的一些方法,我們鼓勵您克隆此GitHub存儲庫并開始練習。 本文的內容足以解決第一個稱為“創建”的單元。 Unit1Create接口包含JavaDocs,該JavaDocs描述Unit1MyCreate方法的預期實現。

public interface Unit1Create {/*** Creates a new Stream of String objects that contains* the elements "A", "B" and "C" in order.** @return a new Stream of String objects that contains* the elements "A", "B" and "C" in order*/Stream <String> newStreamOfAToC();

提供的測試(例如Unit1MyCreateTest)將用作自動評分工具,讓您知道您的解決方案是否正確。

如果尚未執行此操作,請繼續解決Unit1MyCreate類中的工作項。 “需要把他們全都抓到”。

在下一篇文章中,我們將繼續描述可應用于這些Stream并將它們轉換為其他Stream的幾種中間操作。 再見!

翻譯自: https://www.javacodegeeks.com/2019/10/become-a-master-of-java-streams-creating-streams.html

java 用流創建流

總結

以上是生活随笔為你收集整理的java 用流创建流_成为Java流大师–第1部分:创建流的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。