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

Java9 Stream Collectors新增功能(小結)

 更新時間:2019年12月24日 14:57:13   作者:KOFKING  
這篇文章主要介紹了Java9 Stream Collectors新增功能(小結),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

Java 9 Stream Collectors新增功能

Java 8 引入Collectors,用于累加輸入元素至可變的容器如,Map、List以及Set。本文看看Java 9 新增的兩個Collectors:Collectors.filtering 和 Collectors.flatMapping,主要用于和 Collectors.groupingBy 一起提供智能的元素集合.

Collectors.filtering方法

Collectors.filtering方法類似于Stream filter()方法,后者用于過濾輸入元素,但兩者的使用場景不同。Stream filter()在stream鏈接方法中使用,而Collectors.filtering方法被設計和 groupingBy一起使用。

Stream filter()首先過濾元素,然后再分組。被過濾的值被丟棄無法被追溯跟蹤。如果需要跟蹤需要先分組然后再過濾,這正是 Collectors.filtering能做的。

Collectors.filtering帶函數(shù)參數(shù)用于過濾輸入?yún)?shù),然后收集過濾元素:

@Test
public void givenList_whenSatifyPredicate_thenMapValueWithOccurences() {

List<Integer> numbers = List.of(1, 2, 3, 5, 5);

Map<Integer, Long> result = numbers.stream()
 .filter(val -> val > 3)
 .collect(Collectors.groupingBy(i -> i, Collectors.counting()));

assertEquals(1, result.size());

result = numbers.stream()
 .collect(Collectors.groupingBy(i -> i,
  Collectors.filtering(val -> val > 3, Collectors.counting())));

assertEquals(4, result.size());
}

Collectors.flatMapping方法

Collectors.flatMapping類似于Collectors.mapping 方法,但粒度更細。兩者都帶一個函數(shù)和一個收集器參數(shù)用于收集元素,但flatMapping函數(shù)接收元素流,然后通過收集器進行累積操作。首先我們看模型類:

class Blog {

private String authorName;
private List<String> comments = new ArrayList<>();

public Blog(String authorName, String ... comment){
  this.authorName = authorName;
  comments.addAll(Arrays.asList(comment));
}

public String getAuthorName(){
  return this.authorName;
}

public List<String> getComments(){
  return comments;
}
}

Collectors.flatMapping 方法跳過中間集合,直接寫至單個有Collectors.groupingBy定義的組映射容器中:

@Test
public void givenListOfBlogs_whenAuthorName_thenMapAuthorWithComments() {

Blog blog1 = new Blog("1", "Nice", "Very Nice");
Blog blog2 = new Blog("2", "Disappointing", "Ok", "Could be better");
List<Blog> blogs = List.of(blog1, blog2);
   
Map<String, List<List<String>>> authorComments1 = blogs.stream()
 .collect(Collectors.groupingBy(Blog::getAuthorName, 
  Collectors.mapping(Blog::getComments, Collectors.toList())));
  
assertEquals(2, authorComments1.size());
assertEquals(2, authorComments1.get("1").get(0).size());
assertEquals(3, authorComments1.get("2").get(0).size());

Map<String, List<String>> authorComments2 = blogs.stream()
 .collect(Collectors.groupingBy(Blog::getAuthorName, 
  Collectors.flatMapping(blog -> blog.getComments().stream(), 
  Collectors.toList())));

assertEquals(2, authorComments2.size());
assertEquals(2, authorComments2.get("1").size());
assertEquals(3, authorComments2.get("2").size());
}

Collectors.mapping映射所有分組(作者的評論)值收集的器容器中,如List。并且刪除中間集合,直接存儲集合至收集器的容器。

總結

本文介紹Java 9 提供Collectors新的方法。Collectors.filtering() 和 Collectors.flatMapping() ,一般和Collectors.groupingBy() 一起使用。

這些收集器也可以與collector.partitioningby()一起使用,但是僅根據(jù)條件創(chuàng)建兩個分區(qū),收集器的實際功能并沒有得到利用;因此在本教程中沒有提到。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Java基于websocket協(xié)議與netty實時視頻彈幕交互實現(xiàn)

    Java基于websocket協(xié)議與netty實時視頻彈幕交互實現(xiàn)

    本文主要介紹了Java基于websocket協(xié)議與netty實時視頻彈幕交互實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • JAVA獲取本地MAC地址的方法

    JAVA獲取本地MAC地址的方法

    這篇文章主要介紹了JAVA獲取本地MAC地址的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • alibaba?seata服務端具體實現(xiàn)

    alibaba?seata服務端具體實現(xiàn)

    seata是來處理分布式服務之間互相調(diào)用的事務問題,本文重點給大家介紹alibaba-seata實現(xiàn)方法,文中通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • Java利用正則表達式提取數(shù)據(jù)的方法

    Java利用正則表達式提取數(shù)據(jù)的方法

    最近由于項目需求需要提取txt里的數(shù)據(jù),之前用C#實現(xiàn)過,由于最近學習了java,所以嘗試用java實現(xiàn)下,這篇文章主要介紹了Java利用正則表達式提取數(shù)據(jù)的方法,需要的朋友可以參考下,下面來一起看看吧。
    2016-12-12
  • Java異常類型以及處理實例詳解

    Java異常類型以及處理實例詳解

    在程序設計中,進行異常處理是非常關鍵和重要的一部分,一個程序的異常處理框架的好壞直接影響到整個項目的代碼質(zhì)量以及后期維護成本和難度,這篇文章主要給大家介紹了關于Java異常類型以及處理的相關資料,需要的朋友可以參考下
    2021-07-07
  • SpringBoot中使用?ThreadLocal?進行多線程上下文管理及注意事項小結

    SpringBoot中使用?ThreadLocal?進行多線程上下文管理及注意事項小結

    本文詳細介紹了ThreadLocal的原理、使用場景和示例代碼,并在SpringBoot中使用ThreadLocal保存請求中攜帶的用戶信息,ThreadLocal通過為每個線程維護獨立的變量副本,解決了線程安全問題,感興趣的朋友一起看看吧
    2025-02-02
  • Java開發(fā)推薦使用的JDK版本以及對比詳細分析

    Java開發(fā)推薦使用的JDK版本以及對比詳細分析

    這篇文章詳細分析了JDK17和JDK21作為當前推薦版本的優(yōu)缺點,并對比了它們與JDK8和JDK11的差異,文中介紹的非常詳細,對大家學習或者使用java具有一定的參考借鑒價值,需要的朋友可以參考下
    2025-04-04
  • SpringCloud-feign使用詳解

    SpringCloud-feign使用詳解

    Feign是Spring?Cloud中的輕量級RESTful?HTTP服務客戶端,它通過定義接口和注解簡化了服務調(diào)用,Feign支持Ribbon進行負載均衡,并且可以通過OpenFeign與Spring?MVC注解結合使用,文章詳細介紹了Feign的使用方法、自定義配置以及與其他組件的集成
    2025-01-01
  • spring mvc常用注解_動力節(jié)點Java學院整理

    spring mvc常用注解_動力節(jié)點Java學院整理

    這篇文章主要介紹了spring mvc常用注解,詳細的介紹了@RequestMapping, @RequestParam, @ModelAttribute等等這樣類似的注解,有興趣的可以了解一下
    2017-08-08
  • Java Buffer緩沖區(qū)(NIO)

    Java Buffer緩沖區(qū)(NIO)

    Java NIO(New IO)是從Java 1.4版本開始引入的一個新的IO API,可以替代標準的Java IO API。本系列教程將有助于你學習和理解Java NIO。
    2021-09-09

最新評論

海阳市| 柳林县| 手机| 久治县| 偏关县| 英超| 邢台县| 论坛| 渝北区| 吴堡县| 金坛市| 历史| 黄浦区| 苏州市| 铁岭县| 金坛市| 汽车| 仪陇县| 乌拉特中旗| 三明市| 垦利县| 奉化市| 池州市| 石泉县| 宣化县| 临朐县| 勐海县| 沙河市| 滕州市| 海南省| 西乌珠穆沁旗| 即墨市| 白玉县| 天峨县| 北安市| 仁化县| 固安县| 五寨县| 枞阳县| 安塞县| 榆树市|