zoukankan      html  css  js  c++  java
  • jdk8--collect总结

    https://blog.csdn.net/u014351782/article/details/53818430

    一,collect是一个终端操作,它接收的参数是将流中的元素累积到汇总结果的各种方式(称为收集器)

    二,预定义收集器包括将流元素归约和汇总到一个值.如下

    工厂方法

    返回类型

    用于

    toList

    List<T>

    把流中所有元素收集到List中

    示例:List<Menu> menus=Menu.getMenus.stream().collect(Collector.toList())

    toSet

    Set<T>

    把流中所有元素收集到Set中,删除重复项

    示例:Set<Menu> menus=Menu.getMenus.stream().collect(Collector.toSet())

    toCollection

    Collection<T>

    把流中所有元素收集到给定的供应源创建的集合中

    示例:ArrayList<Menu> menus=Menu.getMenus.stream().collect(Collector.toCollection(ArrayList::new))

    Counting

    Long

    计算流中元素个数

    示例:Long count=Menu.getMenus.stream().collect(counting);

    SummingInt

    Integer

    对流中元素的一个整数属性求和

    示例:Integer count=Menu.getMenus.stream().collect(summingInt(Menu::getCalories))

    averagingInt

    Double

    计算流中元素integer属性的平均值

    示例:Double averaging=Menu.getMenus.stream().collect(averagingInt(Menu::getCalories))

    Joining

    String

    连接流中每个元素的toString方法生成的字符串

    示例:String name=Menu.getMenus.stream().map(Menu::getName).collect(joining(“, ”))

    maxBy

    Optional<T>

    一个包裹了流中按照给定比较器选出的最大元素的optional
    如果为空返回的是Optional.empty()

    示例:Optional<Menu> fattest=Menu.getMenus.stream().collect(maxBy(Menu::getCalories))

    minBy

    Optional<T>

    一个包裹了流中按照给定比较器选出的最大元素的optional
    如果为空返回的是Optional.empty()

    示例: Optional<Menu> lessest=Menu.getMenus.stream().collect(minBy(Menu::getCalories))

    Reducing

    归约操作产生的类型

    从一个作为累加器的初始值开始,利用binaryOperator与流中的元素逐个结合,从而将流归约为单个值

    示例:int count=Menu.getMenus.stream().collect(reducing(0,Menu::getCalories,Integer::sum));

    collectingAndThen

    转换函数返回的类型

    包裹另一个转换器,对其结果应用转换函数

    示例:Int count=Menu.getMenus.stream().collect(collectingAndThen(toList(),List::size))

    groupingBy

    Map<K,List<T>>

    根据流中元素的某个值对流中的元素进行分组,并将属性值做为结果map的键

    示例:Map<Type,List<Menu>> menuType=Menu.getMenus.stream().collect(groupingby(Menu::getType))

    partitioningBy

    Map<Boolean,List<T>>

    根据流中每个元素应用谓语的结果来对项目进行分区

    示例:Map<Boolean,List<Menu>> menuType=Menu.getMenus.stream().collect(partitioningBy(Menu::isType));

    三,预定义收集器可以用groupby对流中元素进行分组或者用partitioningBy进行分区

    四,收集器可以高效的复合起来,进行多级分组,多级分区和归约

    五,可以自己实现collector接口进行定义自己的收集器

  • 相关阅读:
    报表选型应该知道的
    报表工具——开源还是商用
    地图报表怎么做?
    关于报表在移动端展现需你需要知道哪些?
    报表怎样实现滚动的公告效果?
    加速JDBC的快捷方法
    百万级分组大报表开发与呈现
    秒级展现的百万级大清单报表怎么做
    润乾集算器技术文档汇总
    报表使用相关知识及技巧汇总
  • 原文地址:https://www.cnblogs.com/suger43894/p/8746485.html
Copyright © 2011-2022 走看看