Collectors类中的静态工厂方法
| 工厂方法 | 返回类型 | 用于 |
| toList | List<T> |
把流中的所有数据元素收集到List集合中。 stream.collect(toList()); |
| toSet | Set<T> |
把流中的所有数据元素收集到Set集合中,以为Set自身的特性,即不会出现重复 项。stream.collect(toSet()); |
| toCollection | Collection<T> |
把流中的数据元素收集你所指定的集合中, list.stream().collect(toCollection(ArrayList::new)); |
| counting | Long |
计算流中元素的个数,list.stream().collect(counting()); |
| summingInt | Integer |
对流中所有元素上指定的整数属性求和, list.stream().collect(summingInt(User::getAge)); |
| averagingInt | Double |
对流中所有元素上指定的整数属性求平均数, list.stream().collect(averagingInt(User::getAge)); |
| summarizingInt |
IntSummaryStatistics |
收集流中所有元素上指定的整数属性的统计值,包括最大值、最小值、总数、平均值。 list.stream().collect(summarizingInt(User::getAge)); |
| joining | String |
连接流中元素上指定的属性, list.stream().map(s -> s).collect(joining("-")) |
| maxBy | Optional<T> |
使用指定的比较器去比较得到流中所有元素上指定属性的最大值, list.stream().collect(maxBy(Comparator.comparing(String::length))) |
| minBy | Optional<T> | 使用指定的比较器去比较得到流中所有元素上指定属性的最小值,
list.stream().collect(minBy(Comparator.comparing(String::length))) |
| reducing | 规约操作产生的类型 |
从一个累加器的初始值开始,使用BinaryOperator与流中的元素逐个集合,最后将流规约为单个值。 list.stream().collect(reducing(0, UserVO::getAge, Integer::sum)); |
| collectingAndThen | 转换函数返回的类型 |
对最终结果转换为另一种类型, list.stream().collect(collectingAndThen(Collectors.toList(), List::size)); |
| groupingBy | Map<k, List<T>> |
根据指定的属性来分组, views.stream().collect(groupingBy(String::length)); |
| partitioningBy | Map<boolean, List<T>> |
根据指定的属性来分区, views.stream().collect(partitioningBy(str -> str.startsWith("ws")) |
Collectors类中的静态工厂方法的更多相关文章
- 静态工厂方法VS构造器
我之前已经介绍过关于构建者模式(Builder Pattern)的一些内容,它是一种很有用的模式用于实例化包含几个属性(可选的)的类,带来的好处是更容易读.写及维护客户端代码.今天,我将继续介绍对象创 ...
- 静态工厂方法和实例工厂方法及普通的bean
容纳你的bean bean工厂:最简单的容器,提供了基础的依赖注入支持.创建各种类型的Bean. 应用上下文(ApplicationContext):建立在bean工厂基础之上,提供系统架构服务. ...
- Effective java读书札记第一条之 考虑用静态工厂方法取代构造器
对于类而言,为了让client获取它自身的一个实例,最经常使用的方法就是提供一个共同拥有的构造器. 另一种放你发,也应该子每一个程序猿的工具箱中占有一席之地.类能够提供一个共同拥有的静态 工厂方法.它 ...
- EFFECTIVE JAVA 第一天 静态工厂方法
静态工厂方法:(这里指的是就是普通static方法),类可以通过静态工厂方法提供给它的客户端,而不是通过构造器.提供静态工厂方法而不是公有构造器,这样做有几大优势. 在类的实现中使用了API的类被称为 ...
- effective java 3th item1:考虑静态工厂方法代替构造器
传统的方式获取一个类的实例,是通过提供一个 public 构造器.这里有技巧,每一个程序员应该记住.一个类可以对外提供一个 public 的 静态工厂方法 ,该方法只是一个朴素的静态方法,不需要有太多 ...
- C#的静态工厂方法与构造函数对比
最近,在与同事进行协同编程时,我们开始讨论在C#中初始化新对象的最佳方法.我一直是使用构造函数实现,尽管他倾向于静态工程方法.这引起了关于每种类型的利弊的大量来来回回的讨论. 为了说明我所说的内容,这 ...
- ej3-1优先使用静态工厂方法而非构造函数来创建对象
背景 很早之前就已经自己翻译了,先简单的贴出来,并做一下回顾. 条款1 优先使用静态工厂方法而非构造函数来创建对象 允许客户端创建一个实例的传统方法是:提供一个公共构造函数:有另外一个必须成为每个程序 ...
- Java 8 Collectors 类的静态工厂方法
摘自<<Java 8 实战>> Collectors 类的静态工厂方法 工厂方法 返回类型 用于 toList List<T> 把流中所有项目收集到一个 List ...
- [原创]java WEB学习笔记102:Spring学习---Spring Bean配置:bean配置方式(工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean) 全类名
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
随机推荐
- No input file specified. phpStudy nginx报错解决方案
1.首先观察路径是否存在, 2.在vhsos.conf文件中 先科普下: 在Windows系统中,正斜杠 / 表示除法,用来进行整除运算:反斜杠 \ 用来表示目录. 在Unix系统中,/ 表示目录:\ ...
- selenium处理元素定位到了点击无效问题
在WEB自动化测试过程中,经常会遇到这样的问题: 元素定位到了,但是点击无效?有人可能会问了,怎么判断元素定位到了,这个问题很好判断 1.给元素加高亮显示 self.driver.execute_sc ...
- JS中将json字符串转为json对象的三种方式
第一种:利用JSON的parse方法,即jsonObj=JSON.parse(jsonStr); 第二种:jsonObj = eval('(' + jsonStr+ ')'); 第三种:比较难理解:j ...
- python值json与pickle模块
#json 是用来序列化对象的 # 只有2个方法,序列化与反序列化 # 但是不能序列化类 与 函数 import json dict={"key1":[1,2,3,4,5]} f ...
- 监控单个进程占用cpu与内存的使用情况
#!/bin/bashinterval=1if [ "$1" != "" ]then interval=$1fiecho "检查时间间隔(单位秒):& ...
- Ajax不执行回调函数的原因(转)
今天用ajax的post请求后台,但是始终不执行回调函数,经查得知,ajax不执行回调函数的原因如下: jquery中规定返回的JSON字符串的KEY要用引号括起来,如{“result”: 1}这样才 ...
- Vue系列之 => webpack处理样式文件
处理css文件 安装 npm i style-loader css-loader -D main.js import $ from 'jquery' //Es6中导入模块的方式 import './c ...
- mongols的反向代理和负载均衡功能
mongols是C++ 服务器基础设施库,它最近更新提供了反向代理和负载均衡功能. 以下为用mongols代理两个nodejs后端(8888和8889)并与nginx压测对比图: 压测显示mongol ...
- 网络库压力测试:mongols VS evpp
evpp是360出品的一个网络库,基于libevent,进行了许多改造,对c++11友好.据称比libevent性能要好. 到底有多好呢?360开发人员有自己的测试,信不信由你. evpp源码下有个h ...
- what?iView的DropDown没有element的split-button?提issure?等不及了,自己实现一个
开始正文之前,有必要先说自己实现这个组件的必要性描述. 话说大家做表格时,增删查改按钮都是放在哪里的?最简单的方式应该是这样: 是不是感觉奇丑无比啊,于是改成了这样: 但是这种操作按钮一多后就没位置放 ...