摘要:用于對流進行排序。三最終操作用于迭代流中的每個元素,并執行相應的操作。類類也是的新特性,用于有效解決問題。與的功能一樣,不過接受一個函數式接口來生成對象為空則拋出異常與使用類似與使用類似這是一種級聯的方式,能夠解決方式的嵌套問題。
Stream API
Stream API是Java8的新特性,通常用于對集合進行一些操作,可以幫助開發者寫出更高效、整潔的代碼。
一、Stream流的創建1、通過已有的集合來創建流,這種方式使用的比較多
Liststrings = Arrays.asList("hushucheng", "hufanqie", "hututu", "marong", "marongrong"); Stream stream = strings.stream();
2、使用stream來創建
Stream二、中間操作stream = Stream.of("hushucheng", "hufanqie", "hututu", "marong", "marongrong");
1、filter
用法如下:
Liststrings = Arrays.asList("hushucheng","" ,"hufanqie", "hututu", "marong", "marongrong"); strings.stream().filter(string -> !string.isEmpty()).forEach(System.out::println);
在例子中,過濾了空字符串。
2、map
用法如下:
Liststrings = Arrays.asList("hushucheng","hufanqie", "hututu", "marong", "marongrong"); strings.stream().map(string -> string.toUpperCase()).forEach(System.out::println);
在例子中,將單詞全部映射為大寫
3、limit
用法如下:
Liststrings = Arrays.asList("hushucheng","hufanqie", "hututu", "marong", "marongrong"); strings.stream().map(string -> string.toUpperCase()).limit(4).forEach(System.out::println);
用來限制返回的個數
4、skip
用法類似limit,用來跳過若干個數。
5、sorted
用于對流進行排序。
Liststrings = Arrays.asList(1, 3, 3, 2, 5, 4); strings.stream().sorted().forEach(System.out::println);
6、distinct
用于去重。用法略。
1、forEach
用于迭代流中的每個元素,并執行相應的操作。比如前面的例子中都用到了。
2、collect
將流中的元素累積成一個匯總結果。
Liststrings = Arrays.asList(1, 3, 3, 2, 5, 4); strings = strings.stream().sorted().collect(Collectors.toList());
3、count
統計流中元素個數。
Optional類也是Java8的新特性,用于有效解決NPE問題。
一、Optional對象的創建1、 empty方法創建一個空對象
Optionals1 = Optional.empty();
2、 of方法可以創建一個非空對象
Optionals2 = Optional.of("marong");
3、 ofNullable方法可以創建一個可以為空的對象
Optional二、常用方法s3 = Optional.ofNullable("marongrong");
1、ifPresent和isPresent
(1) 調用ifPresent方法,則對象不為空執行相關操作。
(2) 調用isPresent方法可以判斷對象是否為空。
2、orElseorElseThroworElseGet
(1) orElse
System.out.println(s1.orElse("marong").equals("marong")); rue System.out.println(s3.orElse("marong").equals("marongrong")); rue
(2) orElseGet
與orElse的功能一樣,不過接受一個函數式接口來生成對象
System.out.println(s1.orElseGet(String::new).equals("")); System.out.println(s3.orElseGet(() -> "marongrong").equals("marongrong"));
(3) orElseThrow
orElseThrow為空則拋出異常
s1.orElseThrow(IllegalStateException::new);
3、filter
與Stream使用類似
4、map
與stream使用類似
5、flatmap
這是一種級聯的方式,能夠解決map方式的optional嵌套問題。
http://www.hollischuang.com/w...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75255.html
摘要:跳過元素流還支持方法,返回一個扔掉了前個元素的流。歸約到目前為止,我們見到過的終端操作都是返回一個之類的或對象等。這樣的查詢可以被歸類為歸約操作將流歸約成一個值。通過反復使用加法,你把一個數字列表歸約成了一個數字。 使用流 在上一篇的讀書筆記中,我們已經看到了流讓你從外部迭代轉向內部迭代。這樣,你就用不著寫下面這樣的代碼來顯式地管理數據集合的迭代(外部迭代)了: /** * 菜單 ...
摘要:第三個問題查找所有來自于劍橋的交易員,并按姓名排序。第六個問題打印生活在劍橋的交易員的所有交易額。第八個問題找到交易額最小的交易。 付諸實戰 在本節中,我們會將迄今學到的關于流的知識付諸實踐。我們來看一個不同的領域:執行交易的交易員。你的經理讓你為八個查詢找到答案。 找出2011年發生的所有交易,并按交易額排序(從低到高)。 交易員都在哪些不同的城市工作過? 查找所有來自于劍橋的交易...
摘要:比如,你可以建立一個,選出熱量超過卡路里的頭三道菜請注意也可以用在無序流上,比如源是一個。跳過元素流還支持方法,返回一個扔掉了前個元素的流。一般來說,應該使用來對這種流加以限制,以避免打印無窮多個值。 一、篩選和切片 1.用謂詞篩選 Streams接口支持filter方法。該操作會接受一個謂詞(一個返回boolean的函數)作為參數,并返回一個包括所有符合謂詞的元素的流。例如篩選出所有...
摘要:新特性總覽標簽本文主要介紹的新特性,包括表達式方法引用流默認方法組合式異步編程新的時間,等等各個方面。還有對應的和類型的函數連接字符串廣義的歸約匯總起始值,映射方法,二元結合二元結合。使用并行流時要注意避免共享可變狀態。 Java8新特性總覽 標簽: java [TOC] 本文主要介紹 Java 8 的新特性,包括 Lambda 表達式、方法引用、流(Stream API)、默認方...
閱讀 3702·2021-11-23 09:51
閱讀 1360·2021-11-10 14:35
閱讀 4008·2021-09-22 15:01
閱讀 1279·2021-08-19 11:12
閱讀 379·2019-08-30 15:53
閱讀 1690·2019-08-29 13:04
閱讀 3429·2019-08-29 12:52
閱讀 3055·2019-08-23 16:14