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

java8 Stream API之reduce使用說(shuō)明

 更新時(shí)間:2020年11月25日 09:14:21   作者:爭(zhēng)夕  
這篇文章主要介紹了java8 Stream API之reduce使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

本篇我們只講reduce。

reduce的作用是把stream中的元素給組合起來(lái)。

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

那么結(jié)合實(shí)際的業(yè)務(wù)場(chǎng)景來(lái)說(shuō),運(yùn)用reduce我們可以做sum,min,max,average,所以這些我們稱之為針對(duì)具體應(yīng)用場(chǎng)景的reduce,這些常用的reduce,stream api已經(jīng)為我們封裝了對(duì)應(yīng)的方法。

以下給出一些具體應(yīng)用場(chǎng)景的reduce實(shí)現(xiàn)方式:

sum

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

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

    // 可以給一個(gè)起始種子值
    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() {
    //構(gòu)造字符串流
    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)對(duì)reduce有所了解!

補(bǔ)充知識(shí):了解Java JNI及動(dòng)態(tài)鏈接庫(kù)

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

Java的JNI則是為了對(duì)接這種功能的技術(shù)。

Java中的一個(gè)方法申明為native時(shí),是不會(huì)直接用java代碼去做實(shí)現(xiàn)的,因?yàn)閚ative方法就是通過(guò)JNI去調(diào)用動(dòng)態(tài)庫(kù)。JDK中有很多native方法,通常涉及到一些底層技術(shù),系統(tǒng)資源相關(guān)。

以上這篇java8 Stream API之reduce使用說(shuō)明就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

青河县| 三穗县| 延安市| 德惠市| 延寿县| 大宁县| 肃宁县| 德化县| 和静县| 阜南县| 神木县| 巴彦淖尔市| 长岛县| 五莲县| 泰和县| 上犹县| 勃利县| 勐海县| 孟津县| 南陵县| 安康市| 寿光市| 永胜县| 临西县| 叶城县| 时尚| 武宁县| 邯郸县| 和龙市| 阜平县| 苍南县| 长沙市| 团风县| 天台县| 梨树县| 灌云县| 平湖市| 正阳县| 永嘉县| 堆龙德庆县| 龙岩市|