Java 8 建立 Stream 的 10 種方式,我保證你受益無窮!
之前棧長分享過 Java 8 一系列新特性的文章,其中重點介紹了 Stream.
獲取上面這份 Java 8~12 系列新特性乾貨文章,請在微信搜尋關注微信公眾號:Java技術棧,在公眾號後臺回覆:java。
今天來分享下在 Java 8 中建立 Stream 的 10 種方式,我就整理了 10 種,其實還有更多,僅供大家參考學習下。
1、Stream.of 可變引數
Stream<String> stream1 = Stream.of("A", "B", "C"); System.out.println("stream1:" + stream1.collect(joining()));
程式輸出:
stream1:ABC
2、Stream.of 陣列
String[] values = new String[]{"A", "B", "C"};
Stream<String> stream2 = Stream.of(values);
System.out.println("stream2:" + stream2.collect(joining()));
程式輸出:
stream2:ABC
看 Stream.of 原始碼,上面這兩種方式其實就是第三種方式的包裝版。
public static<T> Stream<T> of(T... values) { return Arrays.stream(values); }
我們直接使用原始碼中的方式也是一樣的。
3、Arrays.stream
String[] values = new String[]{"A", "B", "C"};
Stream<String> stream3 = Arrays.stream(values);
System.out.println("stream3:" + stream3.collect(joining()));
程式輸出:
stream3:ABC
4、List
List<String> list = Arrays.asList("A", "B", "C"); Stream<String> stream4 = list.stream(); System.out.println("stream4:" + stream4.collect(joining()));
程式輸出:
stream4:ABC
5、Set
Set<String> set = new HashSet<>(Arrays.asList("A", "B", "C"));
Stream<String> stream5 = set.stream();
System.out.println("stream5:" + stream5.collect(joining()));
程式輸出:
stream5:ABC
6、Map
Map<String, String> map = new HashMap<>();
map.put("1", "A");
map.put("2", "B");
map.put("3", "C");
Stream<String> stream6 = map.values().stream();
System.out.println("stream6:" + stream6.collect(joining()));
程式輸出:
stream6:ABC
7、Stream.iterate
Stream<String> stream7 = Stream.iterate("A", e -> String.valueOf((char) (e.charAt(0) + 1))).limit(3);
System.out.println("stream7:" + stream7.collect(joining()));
程式輸出:
stream7:ABC
8、Pattern
String value = "A B C";
Stream<String> stream8 = Pattern.compile("\\W").splitAsStream(value);
System.out.println("stream8:" + stream8.collect(joining()));
程式輸出:
stream8:ABC
9、Files.lines
try {
Stream<String> stream9 = Files.lines(Paths.get("d:/data.txt"));
System.out.println("stream9:" + stream9.collect(joining()));
} catch (IOException e) {
e.printStackTrace();
}
data.txt檔案內容如下:
A
B
C
程式輸出:
stream9:ABC
10、Stream.generate
Stream<String> stream10 = Stream.generate(() -> "A").limit(3);
System.out.println("stream10:" + stream10.collect(joining()));
程式輸出:
stream10:AAA
好了,這是棧長整理的 10 種建立 Stream 的方式,是不是很騷?如果你還知道其他的騷操作,可以留言告訴大家,讓大家記住你的頭像和ID。
轉發分享一下吧,我保證你日後總有機會用得著的。
大量 Java 8~12 的新特性文章我正在編寫中,棧長將陸續分享出來,微信搜尋關注微信公眾號:Java技術棧,公眾號將第一時間推送,不要錯過。
本文原創首發於微信公眾號:Java技術棧(id:javastack),轉載請原樣保留本資訊。
相關推薦
Java 8 建立 Stream 的 10 種方式,我保證你受益無窮!
之前棧長分享過 Java 8 一系列新特性的文章,其中重點介紹了 Stream. 獲取上面這份 Java 8~12 系列新特性
java之執行緒建立的兩種方式,六種狀態和匿名內部類建立子類或實現類物件
一.匿名內部類建立子類或實現類物件 new Test(){} 相當於建立了Test類的子類物件 並且沒有類名 建立介面實現類 new 介面名() {};介面實現類的物件 注意 : new 後邊是類或者介面名 大括號內是類或者介面中的方法 public
java反射class的三種方式,反射建立物件的兩種方式
反射中,欲獲取一個類或者呼叫某個類的方法,首先要獲取到該類的 Class 物件。 1、獲取Class物件 在 Java API 中,提供了獲取 Class 類物件的三種方法: 第一種,使用 Class.forName 靜態方法。 前提:已明確類的全路徑名。 第二種,
java異常處理的九種方式,你都知道並且會用嗎?
處理 Java 中的異常情況並不是個輕鬆的話題,什麼樣的異常需要如何處理,常讓新手們覺得難以理解,甚至有經驗的開發人員也可能花幾個小時討論不決。 正因如此,大多數開發團隊有著一套自己的規則,如果你是團隊裡的新人,你會對團隊之間對於這個規則的巨大差別感到驚訝。 即便是這樣,也有一些大多數團隊都
java 獲取時間的幾種方式,以及SimpleDateFormat裡引數的解釋 等
1、通過Date類來獲取當前時間 Date day=new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(
看完這篇部落格,我保證你肯定會做介面測試了。
最近給公司的新員工培訓web api介面測試,發現這一塊的內部需求還比較大,不僅僅是新員工,包括一些經常寫介面測試老員工,對介面也是似懂非懂的,所以我絕對有必要寫一篇部落格來普及下。 在我們公司內部,一般使用ruby或者python語言來做介面測試,這篇檔案主要是講解使用python語言來做介面測試。 如果要
java中內部類的建立四種情況,三種方式,及內部資料訪問許可權
內部類和外部類的關係,及內部靜態類的資料訪問許可權,宣告方式。 第一種,在外部類內部宣告使用內部類,內部類的型別為static和非 static型別,內部類資料型別為private,protected,public 型別的訪問許可權。外部類為非靜態宣告和許可權如下: p
對Java代碼加密的兩種方式,防止反編譯
java加密使用Virbox Protector對Java項目加密有兩種方式,一種是對War包加密,一種是對Jar包加密。Virbox Protector支持這兩種文件格式加密,可以加密用於解析class文件的java.exe,並且可以實現項目源碼綁定制定設備,防止部署到客戶服務器的項目被整體拷貝。兩種加密方
Maven執行TestNG的testcase 兩種方式,一種testng.xml,一種testngCase.java
詳情參照: http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html 1.maven通過maven-surefire-plugin來執行maven專案中src/test/j
實現java多執行緒的3種方式,99%人沒用過第3種
實現多執行緒的3種方式 1、繼承Thread類 看jdk原始碼可以發現,Thread類其實是實現了Runnable介面的一個例項,繼承Thread類後需要重寫run方法並通過start方法啟動執行緒。 繼承Thread類耦合性太強了,因為java只能單繼承,所以不利
Java執行緒建立的兩種方式
package test; /** * 建立執行緒 * */ public class Demo1 { public static void main(String arg[]){
JAVA 8 的Stream API操作,別再使用if-else迴圈了,
在這篇文章裡,我們將會去了解傳統迴圈的一些替代方案。在Java 8的新功能特性中,最棒的特性就是允許我們去表達我們想要完成什麼而不是要怎樣做。這正是迴圈的不足之處。要確保迴圈的靈活性是需要付出代價的。return、break 或者 continue都會顯著地改變迴圈的實際表現。這迫使我們不僅
Java多執行緒建立的三種方式與對比
一、繼承Thread類建立執行緒類 1、定義Thread類的子類,並重寫該類的run()方法,該run()方法的方法體代表了執行緒需要完成的任務,即執行緒的執行體。 2、建立Thread子類的例項,即建立執行緒物件。 3、呼叫執行緒物件的start()方法來啟動該執行緒
java中實現單例模式的幾種方式,簡單易懂
一、餓漢式單例類 public class Singleton { private Singleton(){ } private static Singleton instance = new Singleton();
Java ZXing 生成QRCode二維碼的兩種方式,可設定圖片大小,和外白色邊框大小
QRGen在ZXing基礎上開發,這個庫使得利用Java生成QR碼變為小菜一碟。它需要依賴ZXing,所以生成圖案時你同時需要ZXing和QRGen的jar包。 QR 碼最常見的應用便是為網站中一個特定的網頁或下載頁帶來流量。因此,QR碼常常會編碼URL或網站地址,使用者可以通過手機攝像頭掃描,並在其瀏覽器中
Java 多執行緒傳值有三種方式,以及另類的第四種方式
現在博主的需求是:有可能在同一個執行緒類執行不一樣的程式。上邊兩個紅框中的cron4j排程器使用的是一個,根據引數不同來執行的。如果我點選後邊的手動執行一次,按照我上邊給出的java程式碼是無法實現的。看下邊的新的程式碼: (adsbygoogle = window.adsbygoo
php 模擬http傳送請求三種方式(curl,stream流的方式,)
一,curl cURL 是一個用來傳輸資料的工具,支援多種協議,如在 Linux 下用 curl 命令列可以傳送各種 HTTP 請求。PHP 的 cURL 是一個底層的庫,它能根據不同協議跟各種伺服器通訊,HTTP 協議是其中一種。 post請求 public
java--(多執行緒建立的兩種方式Thread類和Runnable介面)
(一)繼承Thread類建立多執行緒----單執行緒下面的程式碼是一個死迴圈,但是不會執行main裡面的迴圈語句,而是run()裡面的語句,這是因為該程式是一個單執行緒程式,當呼叫MyThread類的run()方法時,遇到死迴圈,迴圈一直進行。因此,MyThread類的列印
建立執行緒的幾種方式,以及為什麼啟動執行緒不用run,而用start方法!!!
首先,我們大家都知道,建立執行緒的兩種蛀主要的方法,一種是繼承Thread類,另一種是實現Runnable介面。對於第一種建立執行緒的方式有兩個不足: 1.當前執行緒重寫run方法定義該執行緒要完成的工作,這就導致了任務是定義線上程內部的,於是執行緒與任務有一個強耦合關
客觀面試題--8.執行緒的生命週期是什麼?執行緒建立有幾種方式?
1.執行緒的生命週期執行緒是一個動態執行的過程,它也有一個從產生到死亡的過程。(1)生命週期的五種狀態新建(new Thread)當建立Thread類的一個例項(物件)時,此執行緒進入新建狀態(未被啟動)。例如:Thread t1=new Thread();就緒(runna