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<Menu> fattest=Menu.getMenus.stream().collect(maxBy(Menu::getCalories)) |
||
|
minBy |
Optional<T> |
一个包裹了流中按照给定比较器选出的最大元素的optional |
|
示例: 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接口进行定义自己的收集器
jdk8--collect总结的更多相关文章
- JAVA常用集合源码解析系列-ArrayList源码解析(基于JDK8)
文章系作者原创,如有转载请注明出处,如有雷同,那就雷同吧~(who care!) 一.写在前面 这是源码分析计划的第一篇,博主准备把一些常用的集合源码过一遍,比如:ArrayList.HashMap及 ...
- JDK8新特性一览
转载自:http://blog.csdn.net/qiubabin/article/details/70256683 官方新特性说明地址 Jdk8新特性.png 下面对几个常用的特性做下重点说明. 一 ...
- JDK8.0新特性
连接转载地址:http://www.2cto.com/kf/201609/544044.html Eclipse: http://aiyiupload.oss-cn-beijing.aliyuncs. ...
- JDK8源码阅读之Collection及相关方法
最近面试总会被问到JDK8中的一些新特性,所以闲下来抽时间看了一下8的源码,目前主要看的是数据结构部分,特此记录一下. 新增函数式接口,实现该接口的可以直接用lambda表达式. default和st ...
- jdk8中关于操作集合的一些新特性,遍历和排序操作
jdk8增加了不少新的东西,在集合操作这块,就有如 lamda表达式,stream,sort,optional等新的类,主要涉及遍历和排序等方面,新特性提升了不少性能,我们开发就是要拥抱新事物,守着老 ...
- JDK8字符串拼接的正确姿势
1. 对列表中的元素进行拼接 以前,对一个列表中的字符串进行拼接时,常见的代码如示例1所示: 代码示例1 List<String> ids = ImmutableList.of(" ...
- jdk8新特性-亮瞎眼的lambda表达式
jdk8之前,尤其是在写GUI程序的事件监听的时候,各种的匿名内部类,大把大把拖沓的代码,程序毫无美感可言!既然Java中一切皆为对象,那么,就类似于某些动态语言一样,函数也可以当成是对象啊!代码块也 ...
- 试水jdk8 stream
jdk8出来日子不短了,jdk11都出来了,不过用的最多的不过是1.5罢了. 今年终于鼓起勇气认真对待它,在18年记录下学习stream,画上一个圆. 先看个图 Java8中有两大最为重要的改变.第一 ...
- jdk8新特性-stream
一.什么是流stream 1.可理解为高级版本的 Iterator 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的. 2.单向,不可往复 数据只能遍历一次,遍历过一次后即用尽了,就好比 ...
- jdk8中的StreamAPI
1.实体类 package com.zy.model; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.D ...
随机推荐
- singlefile.py
#! encoding=utf-8 import os import os.path AllFiles = {} MinSize = 8100 def OneDir( DirName ): if Di ...
- research plan
- Git:代码冲突常见解决方法【转】
本文转载自:http://blog.csdn.net/iefreer/article/details/7679631 如果系统中有一些配置文件在服务器上做了配置修改,然后后续开发又新添加一些配置项的时 ...
- 可写可选dropdownlist(只测试过ie)
页面: 报废申请人:<asp:TextBox ID="txtPUSER" runat="server" Width="70px" Cs ...
- VUE移动端禁止双手放大缩小
//index.html <meta name="viewport" content="width=device-width,initial-scale=1.0,u ...
- Java学习-异常2
1.异常处理的第一种方式是:上抛[throws] 2.异常处理的第二种方式是:try....catch..如果不想让调用程序知道该异常发生了,被调用的程序应该使用try...catch..进行异常捕捉 ...
- scala 变量定义,基本操作符
scala是jvm语言,它将面向对象与函数风格结合的很好,它可以访问任何java类库并很好的结合使用. 它可以使程序更简单,同时可利用并发的威力. scala基本语法: package com.tes ...
- Jquery EasyUI环境下设置下拉框选中指定选项
前提: 要求点击某个按钮就将所有的下拉框都设置为选中第一个选项,因此,指定索引是最好的做法 尝试过的做法: html代码如下(easyui 的写法) <select class="ea ...
- bootstrap 字体颜色 对齐方式
一:字体代码:作用--颜色 1..text-muted:提示--浅灰色 2..text-primary:主要--蓝色 3..text-success:成功--浅绿色 4..text-info: ...
- jQuery中国各个省份地图分部代码
jQuery中国各个省份地图分部代码 在线演示本地下载