最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java8 Stream API之reduce使用說明

 更新時間:2020年11月25日 09:14:21   作者:爭夕  
這篇文章主要介紹了java8 Stream API之reduce使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

本篇我們只講reduce。

reduce的作用是把stream中的元素給組合起來。

至于怎么組合起來:它需要我們首先提供一個起始種子,然后依照某種運算規(guī)則使其與stream的第一個元素發(fā)生關系產(chǎn)生一個新的種子,這個新的種子再緊接著與stream的第二個元素發(fā)生關系產(chǎn)生又一個新的種子,就這樣依次遞歸執(zhí)行,最后產(chǎn)生的結果就是reduce的最終產(chǎn)出,這就是reduce的算法最通俗的描述;

那么結合實際的業(yè)務場景來說,運用reduce我們可以做sum,min,max,average,所以這些我們稱之為針對具體應用場景的reduce,這些常用的reduce,stream api已經(jīng)為我們封裝了對應的方法。

以下給出一些具體應用場景的reduce實現(xiàn)方式:

sum

  @Test
  public void testSum() {
    List<Integer> integers = Arrays.asList(1, 2, 3, 4, 5);

    // 沒有起始值時返回為Optional類型
    Optional<Integer> sumOptional = integers.stream().reduce(Integer::sum);
    System.out.println(sumOptional.get());

    // 可以給一個起始種子值
    Integer sumReduce = integers.stream().reduce(0, Integer::sum);
    System.out.println(sumReduce);

    //直接用sum方法
    Integer sum = integers.stream().mapToInt(i -> i).sum();
    System.out.println(sum);
  }

concat

@Test
  public void testConcat() {
    //構造字符串流
    List<String> strs = Arrays.asList("H", "E", "L", "L", "O");

    // reduce
    String concatReduce = strs.stream().reduce("", String::concat);
    System.out.println(concatReduce);
  }

min

  @Test
  public void testMin() {

    //min reduce
    Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5);
    Integer minReduce = integerStream.reduce(Integer.MAX_VALUE, Integer::min);
    System.out.println(minReduce);


    // min
    Stream<Integer> integerStream1 = Stream.of(1, 2, 3, 4, 5);
    OptionalInt min = integerStream1.mapToInt(i -> i).min();
    System.out.println(min.getAsInt());
  }

max

  @Test
  public void testMax() {

    //max reduce
    Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5);
    Integer maxReduce = integerStream.reduce(Integer.MIN_VALUE, Integer::max);
    System.out.println(maxReduce);


    // max
    Stream<Integer> integerStream1 = Stream.of(1, 2, 3, 4, 5);
    OptionalInt max = integerStream1.mapToInt(i -> i).max();
    System.out.println(max.getAsInt());
  }

ok,相信大家已經(jīng)對reduce有所了解!

補充知識:了解Java JNI及動態(tài)鏈接庫

提到Java JNI不得不提到動態(tài)鏈接庫,在window操作系統(tǒng)中一般為后綴為DLL的文件,在Linux中為.so文件。動態(tài)鏈接庫的作用在于為多個應用程序提供相同的函數(shù)功能,以此達到節(jié)省代碼量,節(jié)省內存,共享相關數(shù)據(jù)、系統(tǒng)資源的作用。

Java的JNI則是為了對接這種功能的技術。

Java中的一個方法申明為native時,是不會直接用java代碼去做實現(xiàn)的,因為native方法就是通過JNI去調用動態(tài)庫。JDK中有很多native方法,通常涉及到一些底層技術,系統(tǒng)資源相關。

以上這篇java8 Stream API之reduce使用說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Springboot 跨域配置無效及接口訪問報錯的解決方法

    Springboot 跨域配置無效及接口訪問報錯的解決方法

    這篇文章主要介紹了Springboot 跨域配置無效及接口訪問報錯的解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 解決idea導入ssm項目啟動tomcat報錯404的問題

    解決idea導入ssm項目啟動tomcat報錯404的問題

    今天小編就為大家分享一篇解決idea導入ssm項目啟動tomcat報錯404的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • SpringBoot深入分析運行原理與功能實現(xiàn)

    SpringBoot深入分析運行原理與功能實現(xiàn)

    我們發(fā)現(xiàn)springBoot程序開發(fā)比spring程序編寫起來容易的多。配置簡潔,依賴關系簡單,啟動運行容易。那么結下了我們我們就要思考一下入門程序中的這些功能是怎么實現(xiàn)的
    2022-09-09
  • Struts2學習筆記(3)-DMI動態(tài)調用方式

    Struts2學習筆記(3)-DMI動態(tài)調用方式

    本文主要介紹Struts2的DMI動態(tài)調用的兩種方式,簡單實用,希望能給大家做一個參考。
    2016-06-06
  • Java和C#輸入輸出流的方法(詳解)

    Java和C#輸入輸出流的方法(詳解)

    下面小編就為大家?guī)硪黄狫ava和C#輸入輸出流的方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • Spring Boot Admin管理監(jiān)控數(shù)據(jù)的方法

    Spring Boot Admin管理監(jiān)控數(shù)據(jù)的方法

    本篇文章主要介紹了Spring Boot Admin管理監(jiān)控數(shù)據(jù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Springboot+TCP監(jiān)聽服務器搭建過程圖解

    Springboot+TCP監(jiān)聽服務器搭建過程圖解

    這篇文章主要介紹了Springboot+TCP監(jiān)聽服務器搭建過程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 教你利用JAVA實現(xiàn)可以自行關閉服務器的方法

    教你利用JAVA實現(xiàn)可以自行關閉服務器的方法

    今天給大家?guī)淼氖顷P于Java的相關知識,文章圍繞著利用JAVA實現(xiàn)可以自行關閉服務器的方法展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 帶你快速上手Servlet

    帶你快速上手Servlet

    這篇文章主要介紹了帶你快速上手Servlet,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • MyBatis Mapper XML中比較操作符轉義問題解決

    MyBatis Mapper XML中比較操作符轉義問題解決

    在使用MyBatis編寫Mapper XML時,有時會遇到比較操作符需要進行轉義的情況,本文主要介紹了MyBatis Mapper XML中比較操作符轉義問題解決,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01

最新評論

蓬莱市| 临邑县| 肇州县| 郯城县| 高雄县| 南昌县| 云阳县| 肃南| 古蔺县| 巴彦淖尔市| 体育| 罗江县| 大姚县| 五峰| 泰顺县| 汶川县| 哈巴河县| 遂溪县| 西和县| 东辽县| 扎兰屯市| 安达市| 苍南县| 逊克县| 密山市| 延庆县| 宁陕县| 台东县| 武胜县| 修武县| 西丰县| 大港区| 松潘县| 清流县| 万荣县| 罗城| 徐闻县| 晋城| 永寿县| 惠来县| 濮阳县|