成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Stream API和Optional類學(xué)習(xí)筆記

geekidentity / 2718人閱讀

摘要:用于對(duì)流進(jìn)行排序。三最終操作用于迭代流中的每個(gè)元素,并執(zhí)行相應(yīng)的操作。類類也是的新特性,用于有效解決問題。與的功能一樣,不過接受一個(gè)函數(shù)式接口來生成對(duì)象為空則拋出異常與使用類似與使用類似這是一種級(jí)聯(lián)的方式,能夠解決方式的嵌套問題。

Stream API

Stream API是Java8的新特性,通常用于對(duì)集合進(jìn)行一些操作,可以幫助開發(fā)者寫出更高效、整潔的代碼。

一、Stream流的創(chuàng)建

1、通過已有的集合來創(chuàng)建流,這種方式使用的比較多

List strings = Arrays.asList("hushucheng", "hufanqie", "hututu", "marong", "marongrong");
Stream stream = strings.stream();

2、使用stream來創(chuàng)建

Stream stream = Stream.of("hushucheng", "hufanqie", "hututu", "marong", "marongrong");
二、中間操作

1、filter
用法如下:

        List strings = Arrays.asList("hushucheng","" ,"hufanqie", "hututu", "marong", "marongrong");
        strings.stream().filter(string -> !string.isEmpty()).forEach(System.out::println);

在例子中,過濾了空字符串。

2、map
用法如下:

        List strings = Arrays.asList("hushucheng","hufanqie", "hututu", "marong", "marongrong");
        strings.stream().map(string -> string.toUpperCase()).forEach(System.out::println);

在例子中,將單詞全部映射為大寫

3、limit
用法如下:

        List strings = Arrays.asList("hushucheng","hufanqie", "hututu", "marong", "marongrong");
        strings.stream().map(string -> string.toUpperCase()).limit(4).forEach(System.out::println);

用來限制返回的個(gè)數(shù)

4、skip
用法類似limit,用來跳過若干個(gè)數(shù)。

5、sorted
用于對(duì)流進(jìn)行排序。

        List strings = Arrays.asList(1, 3, 3, 2, 5, 4);
        strings.stream().sorted().forEach(System.out::println);

6、distinct
用于去重。用法略。

三、最終操作

1、forEach
用于迭代流中的每個(gè)元素,并執(zhí)行相應(yīng)的操作。比如前面的例子中都用到了。

2、collect
將流中的元素累積成一個(gè)匯總結(jié)果。

List strings = Arrays.asList(1, 3, 3, 2, 5, 4);
strings = strings.stream().sorted().collect(Collectors.toList());

3、count
統(tǒng)計(jì)流中元素個(gè)數(shù)。

Optional類

Optional類也是Java8的新特性,用于有效解決NPE問題。

一、Optional對(duì)象的創(chuàng)建

1、 empty方法創(chuàng)建一個(gè)空對(duì)象

Optional s1 = Optional.empty();

2、 of方法可以創(chuàng)建一個(gè)非空對(duì)象

Optional s2 = Optional.of("marong");

3、 ofNullable方法可以創(chuàng)建一個(gè)可以為空的對(duì)象

Optional s3 = Optional.ofNullable("marongrong");
二、常用方法

1、ifPresent和isPresent
(1) 調(diào)用ifPresent方法,則對(duì)象不為空?qǐng)?zhí)行相關(guān)操作。
(2) 調(diào)用isPresent方法可以判斷對(duì)象是否為空。

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的功能一樣,不過接受一個(gè)函數(shù)式接口來生成對(duì)象

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
這是一種級(jí)聯(lián)的方式,能夠解決map方式的optional嵌套問題。
http://www.hollischuang.com/w...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75255.html

相關(guān)文章

  • 《Java8實(shí)戰(zhàn)》-第五章讀書筆記(使用流Stream-01)

    摘要:跳過元素流還支持方法,返回一個(gè)扔掉了前個(gè)元素的流。歸約到目前為止,我們見到過的終端操作都是返回一個(gè)之類的或?qū)ο蟮?。這樣的查詢可以被歸類為歸約操作將流歸約成一個(gè)值。通過反復(fù)使用加法,你把一個(gè)數(shù)字列表歸約成了一個(gè)數(shù)字。 使用流 在上一篇的讀書筆記中,我們已經(jīng)看到了流讓你從外部迭代轉(zhuǎn)向內(nèi)部迭代。這樣,你就用不著寫下面這樣的代碼來顯式地管理數(shù)據(jù)集合的迭代(外部迭代)了: /** * 菜單 ...

    OldPanda 評(píng)論0 收藏0
  • Java8學(xué)習(xí)小記

    摘要:但有一個(gè)限制它們不能修改定義的方法的局部變量的內(nèi)容。如前所述,這種限制存在的原因在于局部變量保存在棧上,并且隱式表示它們僅限于其所在線程。 2014年,Oracle發(fā)布了Java8新版本。對(duì)于Java來說,這顯然是一個(gè)具有里程碑意義的版本。尤其是那函數(shù)式編程的功能,避開了Java那煩瑣的語法所帶來的麻煩。 這可以算是一篇Java8的學(xué)習(xí)筆記。將Java8一些常見的一些特性作了一個(gè)概要的...

    CHENGKANG 評(píng)論0 收藏0
  • 《Java8實(shí)戰(zhàn)》-第五章讀書筆記(使用流Stream-02)

    摘要:第三個(gè)問題查找所有來自于劍橋的交易員,并按姓名排序。第六個(gè)問題打印生活在劍橋的交易員的所有交易額。第八個(gè)問題找到交易額最小的交易。 付諸實(shí)戰(zhàn) 在本節(jié)中,我們會(huì)將迄今學(xué)到的關(guān)于流的知識(shí)付諸實(shí)踐。我們來看一個(gè)不同的領(lǐng)域:執(zhí)行交易的交易員。你的經(jīng)理讓你為八個(gè)查詢找到答案。 找出2011年發(fā)生的所有交易,并按交易額排序(從低到高)。 交易員都在哪些不同的城市工作過? 查找所有來自于劍橋的交易...

    liangzai_cool 評(píng)論0 收藏0
  • 《java 8 實(shí)戰(zhàn)》讀書筆記 -第五章 使用流

    摘要:比如,你可以建立一個(gè),選出熱量超過卡路里的頭三道菜請(qǐng)注意也可以用在無序流上,比如源是一個(gè)。跳過元素流還支持方法,返回一個(gè)扔掉了前個(gè)元素的流。一般來說,應(yīng)該使用來對(duì)這種流加以限制,以避免打印無窮多個(gè)值。 一、篩選和切片 1.用謂詞篩選 Streams接口支持filter方法。該操作會(huì)接受一個(gè)謂詞(一個(gè)返回boolean的函數(shù))作為參數(shù),并返回一個(gè)包括所有符合謂詞的元素的流。例如篩選出所有...

    Richard_Gao 評(píng)論0 收藏0
  • Java8新特性總覽

    摘要:新特性總覽標(biāo)簽本文主要介紹的新特性,包括表達(dá)式方法引用流默認(rèn)方法組合式異步編程新的時(shí)間,等等各個(gè)方面。還有對(duì)應(yīng)的和類型的函數(shù)連接字符串廣義的歸約匯總起始值,映射方法,二元結(jié)合二元結(jié)合。使用并行流時(shí)要注意避免共享可變狀態(tài)。 Java8新特性總覽 標(biāo)簽: java [TOC] 本文主要介紹 Java 8 的新特性,包括 Lambda 表達(dá)式、方法引用、流(Stream API)、默認(rèn)方...

    mayaohua 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<