java8函数式编程常用收集器<二>
2017-11-17 00:00
253 查看
摘要: java8函数式变成之收集器
继续看看《java8函数式编程》,来看看这个java.util.stream.Collectors类提供了那些静态的收集器(一种通用的,从流中生成复杂值的结构,只要将她传给collect方法,所有的流就可以使用它了),提供的方法也是挺多的(下面的例子都是临摹书中的现成例子,脑袋不想动了)。
装换成其他集合:前面介绍了collect(toList()),在流中生成列表,但是人们还是希望从流中生成其他值,比如Map或Set,或者你希望定制一个类将你想要的类抽象出来。调用toList或者toSet方法时,不需要指定具体的类型,Stream类库在背后自动为你挑选了合适的类型。你如果使用一个特定的集合收集类,可以指定该集合的类型,使用toCollection来创建集合。
装换成值:以利用收集器让流生成一个值。maxBy和 minBy允许用户按某种特定的顺序生成一个值。定义了一个比较器,并将比较器传入 maxBy 收集器,用来找出最大的,minBy也是类似的。还有averagingInt,averagingDouble,averagingLong,summingInt等方法。
下面是Collectors中maxBy的实现,由BinaryOperator接口定的方法实现。
数据分块:收集器 partitioningBy,它接受一个流,并将其分成两部分(如图 高级集合类和收集器 ,它使用 Predicate 对象判断一个元素应该属于哪个部分,并根据布尔值返回一 个Map到列表。
数据分组:数据分组是一种更自然的分割数据操作,与将数据分成 ture 和 false 两部分不同,可以使 用任意值对数据分组,很像sql中的group by操作吧。
字符串:使用 Collectors.joining 收集流中的值,该方法 可以方便地从一个流得到一个字符串,允许用户提供分隔符(用以分隔元素)、前缀和后缀。
还有收集器是可以组合使用的,下面是计算专辑中每个艺术家的作品数,具体的每个方法的使用,还是看官方的文档吧:
还有上面使用的Artlist::getName,其实就是artList->artlist.getName(),叫做方法引用。
周五要对自己好一点,看今天的比赛录像去,看看凯尔特人的面具侠!
继续看看《java8函数式编程》,来看看这个java.util.stream.Collectors类提供了那些静态的收集器(一种通用的,从流中生成复杂值的结构,只要将她传给collect方法,所有的流就可以使用它了),提供的方法也是挺多的(下面的例子都是临摹书中的现成例子,脑袋不想动了)。
装换成其他集合:前面介绍了collect(toList()),在流中生成列表,但是人们还是希望从流中生成其他值,比如Map或Set,或者你希望定制一个类将你想要的类抽象出来。调用toList或者toSet方法时,不需要指定具体的类型,Stream类库在背后自动为你挑选了合适的类型。你如果使用一个特定的集合收集类,可以指定该集合的类型,使用toCollection来创建集合。
装换成值:以利用收集器让流生成一个值。maxBy和 minBy允许用户按某种特定的顺序生成一个值。定义了一个比较器,并将比较器传入 maxBy 收集器,用来找出最大的,minBy也是类似的。还有averagingInt,averagingDouble,averagingLong,summingInt等方法。
下面是Collectors中maxBy的实现,由BinaryOperator接口定的方法实现。
数据分块:收集器 partitioningBy,它接受一个流,并将其分成两部分(如图 高级集合类和收集器 ,它使用 Predicate 对象判断一个元素应该属于哪个部分,并根据布尔值返回一 个Map到列表。
数据分组:数据分组是一种更自然的分割数据操作,与将数据分成 ture 和 false 两部分不同,可以使 用任意值对数据分组,很像sql中的group by操作吧。
字符串:使用 Collectors.joining 收集流中的值,该方法 可以方便地从一个流得到一个字符串,允许用户提供分隔符(用以分隔元素)、前缀和后缀。
还有收集器是可以组合使用的,下面是计算专辑中每个艺术家的作品数,具体的每个方法的使用,还是看官方的文档吧:
还有上面使用的Artlist::getName,其实就是artList->artlist.getName(),叫做方法引用。
周五要对自己好一点,看今天的比赛录像去,看看凯尔特人的面具侠!
相关文章推荐
- Docker <二> 常用命令
- Step By Step(Java 常用对象篇<二>)
- java9学习之常用工具增强<二>
- Mybatis学习之路之Oracle增删改查以及常用函数<二>
- Linux 入门常用命令<二>
- Git的使用<二> github的常用使用方法
- Python脚本控制的WebDriver 常用操作 <二> 关闭浏览器
- 【monkey】mokey常用事件<二>
- SNMP协议详解<二>
- V4L2 API详解 <二> Camera详细设置
- <转>sqlplus常用命令使用
- Picasso之图片缓存机制<二>ListView篇
- 【算法基础个人常用总结】<-------持续更新------->
- Logback常用配置详解(二)<appender>
- 黑马程序员--OC之Foundation框架的使用<二>
- 数据结构与算法之双向链表 <二>
- 信息管理代码分析<二>读取二进制文件数据
- android studio开发<二> 动态按钮动画效果
- <input> 文本框几种常用属性
- Android NDK学习 <二> Android.mk的制作