Java 8 Collectors 类的静态工厂方法
摘自<<Java 8 实战>>
工厂方法 | 返回类型 | 用于 |
toList | List<T> | 把流中所有项目收集到一个 List |
使用示例: List<Dish> dishes = menuStream.collect(toList()); | ||
toSet | Set<T> | 把流中所有项目收集到一个 Set ,删除重复项 |
使用示例: Set<Dish> dishes = menuStream.collect(toSet()); | ||
toCollection | Collection<T> | 把流中所有项目收集到给定的供应源创建的集合 |
使用示例: Collection<Dish> dishes = menuStream.collect(toCollection(),ArrayList::new); |
||
counting | Long | 计算流中元素的个数 |
使用示例: long howManyDishes = menuStream.collect(counting()); | ||
summingInt | Integer | 对流中项目的一个整数属性求和 |
使用示例: int totalCalories = menuStream.collect(summingInt(Dish::getCalories)); |
||
averagingInt | Double | 计算流中项目 Integer 属性的平均值 |
使用示例: double avgCalories = menuStream.collect(averagingInt(Dish::getCalories)); |
||
summarizingInt | IntSummaryStatistics |
收集关于流中项目 Integer 属性的统计值,例如最大、最小、总和与平均值 |
使用示例: IntSummaryStatistics menuStatistics = menuStream.collect(summarizingInt(Dish::getCalories)); |
||
joining | String | 连接对流中每个项目调用 toString 方法所生成的字符串 |
使用示例: String shortMenu = menuStream.map(Dish::getName).collect(joining(",")); |
||
maxBy | Optional<T> |
一个包裹了流中按照给定比较器选出的最大元素的 Optional,或如果流为空则为 Optional.empty() |
使用示例: Optional<Dish> fattest = menuStream.collect(maxBy(comparingInt(Dish::getCalories))); |
||
minBy | Optional<T> |
一个包裹了流中按照给定比较器选出的最小元素的 Optional,或如果流为空则为 Optional.empty() |
使用示例: Optional<Dish> lightest = menuStream.collect(minBy(comparingInt(Dish::getCalories))); |
||
reducing | 归约操作产生的类型 |
从一个作为累加器的初始值开始,利用 BinaryOperator 与流中的元素逐个结合,从而将流归约为单个值 |
使用示例: int totalCalories = menuStream.collect(reducing(0, Dish::getCalories, Integer::sum)); |
||
collectingAndThen | 转换函数返回的类型 | 包裹另一个收集器,对其结果应用转换函数 |
使用示例: int howManyDishes = menuStream.collect(collectingAndThen(toList(), List::size)); |
||
groupingBy | Map<K, List<T>> |
根据项目的一个属性的值对流中的项目作问组,并将属性值作为结果 Map 的键 |
使用示例: Map<Dish.Type,List<Dish>> dishesByType = menuStream.collect(groupingBy(Dish::getType)); |
||
partitioningBy | Map<Boolean,List<T>> | 根据对流中每个项目应用谓词的结果来对项目进行分区 |
使用示例: Map<Boolean,List<Dish>> vegetarianDishes = menuStream.collect(partitioningBy(Dish::isVegetarian)); |
Java 8 Collectors 类的静态工厂方法的更多相关文章
- Java8 Collectors类的静态工厂方法
预定义收集器的功能,就是那些可以从Collectors类提供的工厂方法(例如grouping By)创建的收集器. 它们主要提供了三大功能: •将流元素归约和汇总为一个值 •元素分组 •元素分区 •c ...
- 改善JAVA代码01:考虑静态工厂方法代替构造器
前言 系列文章:[传送门] 每次开始新的一本书,我都会很开心.新书新心情. 正文 静态工厂方法代替构造器 说起这个,好多可以念叨的.做了一年多的项目,慢慢也有感触. 说起构造器 大家很明白,构造器 ...
- effective java 3th item1:考虑静态工厂方法代替构造器
传统的方式获取一个类的实例,是通过提供一个 public 构造器.这里有技巧,每一个程序员应该记住.一个类可以对外提供一个 public 的 静态工厂方法 ,该方法只是一个朴素的静态方法,不需要有太多 ...
- 【读书笔记 - Effective Java】01. 考虑用静态工厂方法代替构造器
获取类的实例有两种方法: 1. 提供一个公有的构造器(最常用). 2. 提供一个公有的静态工厂方法(static factory method). // 静态工厂方法示例 public static ...
- Java 的静态工厂方法
本文转载自:https://www.jianshu.com/p/ceb5ec8f1174 序:什么是静态工厂方法 Effective Java 2.1 静态工厂方法与构造器不同的第一优势在于,它们有名 ...
- 创建对象_工厂方法(Factory Method)模式 与 静态工厂方法
工厂方法模式: 定义:为创建对象定义一个接口,让子类决定实例化哪个类.工厂方法让一个类的实例化延迟至子类. 应用场景: 客户类不关心使用哪个具体类,只关心该接口所提供的功能: 创建过程比较 ...
- ej3-1优先使用静态工厂方法而非构造函数来创建对象
背景 很早之前就已经自己翻译了,先简单的贴出来,并做一下回顾. 条款1 优先使用静态工厂方法而非构造函数来创建对象 允许客户端创建一个实例的传统方法是:提供一个公共构造函数:有另外一个必须成为每个程序 ...
- EffectiveJava(1) 构造器和静态工厂方法
构造器和静态工厂方法 **构造器是大家创建类时的构造方法,即使不显式声明,它也会在类内部隐式声明,使我们可以通过类名New一个实例. 静态方法是构造器的另一种表现形式** 主题要点:何时以及如何创建对 ...
- [原创]java WEB学习笔记102:Spring学习---Spring Bean配置:bean配置方式(工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean) 全类名
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
随机推荐
- 营销H5项目-BugList+解决方案+方法
作者会持续更新,后续会整合SF.gg上 其他小伙伴整理的资料 动态改变微信title var $body = $('body'); document.title = '五班老同学(35)'; var ...
- 虚拟Linux系统使用Windows系统oracle数据库
前提:本地oracle数据库能正常使用. 数据库:oracle 11g 虚拟机:VMware_workstation_full_12.5.2 本机系统:Windows 7 旗舰版 虚拟机系统:open ...
- 性能优化 | JVM性能调优篇——来自阿里P7的经验总结
VM 调优概述: 性能定义: 吞吐量 - 指不考虑 GC 引起的停顿时间或内存消耗,垃圾收集器能支撑应用达到的最高性能指标. 延迟 - 其度量标准是缩短由于垃圾啊收集引起的停顿时间或者完全消除因垃圾收 ...
- Linux下nginx配置https协议访问
一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...
- MVP模式的学习
简书: http://www.jianshu.com/p/f6fd9656f619 Github: https://github.com/tsaievan/YFMVPDemo
- Spring Aop(二)——基于Aspectj注解的Spring Aop简单实现
转发地址:https://www.iteye.com/blog/elim-2394762 2 基于Aspectj注解的Spring Aop简单实现 Spring Aop是基于Aop框架Aspectj实 ...
- WebsSocket
本篇阅读目录 一.Websocket原理(握手.解密.加密) 二.基于Python实现简单示例 回到顶部 一.Websocket原理(握手.解密.加密) WebSocket协议是基于TCP的一种新的协 ...
- python之hashlib模块(MD5校验)
示例:大文件md5校验 def md5(fileMd5): import hashlib md5_value = hashlib.md5() with open(fileMd5,'rb') as f: ...
- mac 查看隐藏文件及快速打开终端
查看隐藏文件: 1.在目标目录打开终端,然后输入ls -al命令快速查看目标目录下的文件(包括隐藏文件) 2.快捷键shift+cmmand+.(显示或者隐藏) 打开终端方式: 1.设置组合快捷键,单 ...
- 关于SVM的一些知识点
SVM支持向量机 定义:支持向量机是主要用于解决分类问题的学习模型.它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器. 分类 1-当训练样本线性可分,通过硬间隔最大化,学习一个线性分类 ...