欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java8 Stream API之reduce使用說明

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

本篇我們只講reduce。

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

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

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

以下給出一些具體應用場景的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,相信大家已經對reduce有所了解!

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

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

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

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

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

相關文章

  • Java設計模式之建造者模式

    Java設計模式之建造者模式

    這篇文章介紹了Java設計模式之建造者模式,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • RocketMQ中消費者的消費進度管理

    RocketMQ中消費者的消費進度管理

    這篇文章主要介紹了RocketMQ中消費者的消費進度管理,業(yè)務實現(xiàn)消費回調的時候,當且僅當此回調函數返回ConsumeConcurrentlyStatus.CONSUME_SUCCESS ,RocketMQ才會認為這批消息(默認是1條)是消費完成的,需要的朋友可以參考下
    2023-10-10
  • Spring MVC 基于URL的映射規(guī)則(注解版)

    Spring MVC 基于URL的映射規(guī)則(注解版)

    這篇文章主要介紹了Spring MVC 基于URL的映射規(guī)則(注解版) ,詳細的介紹了幾種方式,有興趣的可以了解一下
    2017-05-05
  • Spring定時服務QuartZ原理及代碼案例

    Spring定時服務QuartZ原理及代碼案例

    這篇文章主要介紹了Spring定時服務QuartZ原理及代碼案例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • SpringBoot集成Auth0 JWT的示例代碼

    SpringBoot集成Auth0 JWT的示例代碼

    本文主要介紹了SpringBoot集成Auth0 JWT的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java數組高級算法與Arrays類常見操作小結【排序、查找】

    Java數組高級算法與Arrays類常見操作小結【排序、查找】

    這篇文章主要介紹了Java數組高級算法與Arrays類常見操作,結合實例形式總結分析了Java數組常見的排序算法、查找算法相關原理、實現(xiàn)與使用技巧,需要的朋友可以參考下
    2019-03-03
  • 詳解Java信號量Semaphore的原理及使用

    詳解Java信號量Semaphore的原理及使用

    Semaphore來自于JDK1.5的JUC包,直譯過來就是信號量,被作為一種多線程并發(fā)控制工具來使用。本文將詳解其原理與使用方法,感興趣的可以學習一下
    2022-05-05
  • SpringBoot集成Nacos的詳細教程

    SpringBoot集成Nacos的詳細教程

    這篇文章主要介紹了SpringBoot集成Nacos的詳細教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Spring boot中Jackson的操作指南

    Spring boot中Jackson的操作指南

    這篇文章主要給大家介紹了關于Spring boot中Jackson操作的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11
  • 解決mybatis plus報錯com.microsoft.sqlserver.jdbc.SQLServerException:必須執(zhí)行該語句才能獲得結果

    解決mybatis plus報錯com.microsoft.sqlserver.jdbc.SQLServerE

    這篇文章主要介紹了解決mybatis plus報錯com.microsoft.sqlserver.jdbc.SQLServerException:必須執(zhí)行該語句才能獲得結果,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05

最新評論