博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java8List集合根据对象的属性去重
阅读量:4672 次
发布时间:2019-06-09

本文共 1078 字,大约阅读时间需要 3 分钟。

import static java.util.Comparator.comparingLong;import static java.util.stream.Collectors.collectingAndThen;import static java.util.stream.Collectors.toCollection;// 根据id去重     List
unique = persons.stream().collect( collectingAndThen( toCollection(() -> new TreeSet<>(comparingLong(Person::getId))), ArrayList::new) );

分析:

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

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

工厂方法                返回类型                  

collectingAndThen   转换函数返回的类型   包裹另一个转换器,对其结果应用转换函数

示例:Int count=Menu.getMenus.stream().collect(collectingAndThen(toList(),List::size))

 

toCollection            Collection<T>            把流中所有元素收集到给定的供应源创建的集合中

示例:ArrayList<Menu> menus=Menu.getMenus.stream().collect(Collectors.toCollection(ArrayList::new))

 

Comparator.comparing(Function keyExtractor)生成1Comparator对象,要求keyExtractor.apply()返回值一定要实现Comparable接口。从Student对象中提取id属性,而idint类型(Integer实现了Comparable)comparingDouble()comparingLong()comparingInt()不过是comparing()更具体的版本,使用方式相同。如果是字符串比较用Comparator.comparing(Human::getName)

转载于:https://www.cnblogs.com/fswhq/p/java8_list.html

你可能感兴趣的文章
HDU 1394 Minimum Inversion Number (数据结构-线段树)
查看>>
ansible-playbook && Roles && include
查看>>
[Alpha阶段]第二次Scrum Meeting
查看>>
关于Java 8 forEach
查看>>
.NET设计模式(1):1.1 单例模式(Singleton Pattern)
查看>>
创建模态对话框和非模态对话框
查看>>
08-图8 How Long Does It Take
查看>>
二维数组中最大连通子数组
查看>>
java 正则表达式-忽略大小写与多行匹配
查看>>
mac 上亚马逊密钥登录
查看>>
css选择器中:first-child与:first-of-type的区别
查看>>
nopcommerce 二次开发
查看>>
NHibernate入门实例
查看>>
IBM_DS5020磁盘阵列做raid、热备并把盘阵挂在服务器上的步骤
查看>>
svg制作风车旋转
查看>>
《软件工程》课堂作业:返回一个整数数组中最大字数组的和
查看>>
ACM 美素数 (没AC)
查看>>
Sqlserver学习研究
查看>>
VTK图形模型主要对象
查看>>
c# Linq实现 获得某一个路径下所有文件的名(不含扩展名)
查看>>