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

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

工厂方法

返回类型

用于

toList

List<T>

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

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

toSet

Set<T>

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

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

toCollection

Collection<T>

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

示例:ArrayList<Menu> menus=Menu.getMenus.stream().collect(Collectors.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接口进行定义自己的收集器

JAVA8之collect总结相关推荐

  1. java8 stream collect方法

    参考自:Java Platform SE 8 Mutable reduction A mutable reduction operation accumulates input elements in ...

  2. java8 stream().collect() 各种数据结构使用方法

    // user 对象 @Data public class User{private int age;private String name; } List<User> list = Li ...

  3. java8 stream().map().collect()用法

    java8 stream().map().collect()用法 有一个集合: List<User> users = getList(); //从数据库查询的用户集合 现在想获取User的 ...

  4. java8 Lambda Stream collect Collectors 常用实例

    将一个对象的集合转化成另一个对象的集合 List<OrderDetail> orderDetailList = orderDetailService.listOrderDetails(); ...

  5. java8新特性学习笔记(Lambda,stream(),filter(),collect(),map())

    文章目录 1.lambda表达式(重点) 1.需求分析 2.Lambda表达式初体验 3.Lambda的语法规则 3.1 Lambda练习1 3.1 Lambda练习2 4.Lambda表达式的原理 ...

  6. java8 .stream().map().collect() 的用法

    API: https://www.runoob.com/java/java8-streams.html mylist.stream().map(myfunction->{return item; ...

  7. java8 reduce的用法_Java8中聚合操作collect、reduce方法详解

    下面我们一起来了解一下关于Java8中聚合操作collect.reduce方法,希望这篇文章能够帮助到各位java初学者. Stream的基本概念 Stream和集合的区别: Stream不会自己存储 ...

  8. java8 stream().map().collect()的Collectors.toList()、Collectors.toMap()、Collectors.groupingBy()的

    一.Collectors.toList() 现在有个集合: List<User> users = getUserList(); 现在需要将这些user的id提取出来.这个很简单,for循环 ...

  9. java8 collect 类型转换_java8新特性之list转换

    // 根据id去重 List unique = appleList.stream().collect( collectingAndThen( toCollection(() -> new Tre ...

最新文章

  1. c++ mqtt客户端_MQTT安全性设计详解
  2. xsy 1836 - Shop
  3. java qq登录界面_用java实现QQ登录界面怎么写
  4. 构造 Codeforces Round #275 (Div. 2) C. Diverse Permutation
  5. 在路上(on the road)
  6. 【php】用filter_var实现的简单参数验证
  7. 深度学习(32)随机梯度下降十: 手写数字识别问题(层)
  8. 如何在Linux下用C/C++语言操作数据库sqlite3(很不错!设计编译链接等很多问题!)...
  9. iOS 蓝牙开发 swift (一)
  10. dsp调音一次多少钱_把手教你调音玩转DSP
  11. 程序员必会10种算法
  12. win10 休眠不读u盘_如何解决win10识别不了U盘问题
  13. [渝粤教育] 武汉大学 自然科学经典导引 参考 资料
  14. 同款蓝牙耳机为什么会串联_为什么蓝牙耳机不能两个同时使用
  15. 创建型模式Creational Patterns之单例模式singleton
  16. oracle不产生特定表的归档,oracle数据库归档与非归档
  17. idea误操作reset head导致未提交的代码丢失(修改记录清空了)
  18. python能爬取网站后台数据_如何利用Python爬取网站数据?
  19. YTU 3921 游戏
  20. [日语二级词汇]日语二级必会汉字总结10

热门文章

  1. java gc占用cpu问题_Java进程占用CPU高的问题跟踪
  2. 在Ubuntu中安装Windows7虚拟机的一点经验
  3. Mysql数据库基本sql语句
  4. wps或word中如何将两个字宽度名字批量改成三个字宽度名字
  5. 【Java】IDEA修改新建工程默认设置的方法
  6. 用于爬虫的高匿动态ip代理要怎么选择?存在哪些猫腻?
  7. dpkg安装.deb包
  8. 编译vc10版(VS2010)opencv2/3
  9. “黑客”分为哪几种?《你安全吗?》中秦淮到底是哪种黑客?
  10. java null转int_将String转换为int。如果String为null,则将int设置为0