stream流根据集合中的元素的属性进行去重的方法
public class StreamListTest {
public static void main(String[] args) {
List<Student> studentList = new ArrayList<>();
studentList.add(new Student("1","zhangsan"));
studentList.add(new Student("1","zhangsan"));
studentList.add(new Student("1","赵六"));
studentList.add(new Student("2","wangwu"));
studentList.add(new Student("3","超仔"));
List<Student> collect = studentList.stream().distinct().collect(Collectors.toList());
collect.forEach(System.out::println);
System.out.println("-----------------------以下是根据对象中的某个属性进行去重");
List<Student> students = studentList.stream().collect(
Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
Comparator.comparing(Student::getStuNo))),ArrayList::new));
students.forEach(System.out::println);
}
}
输出结果:
Student(stuNo=1, name=zhangsan)
Student(stuNo=1, name=赵六)
Student(stuNo=2, name=wangwu)
Student(stuNo=3, name=超仔)
-----------------------以下是根据对象中的某个属性进行去重
Student(stuNo=1, name=zhangsan)
Student(stuNo=2, name=wangwu)
Student(stuNo=3, name=超仔)
这里可以看到完美根据学生的stuNo去重,如果只是使用distinct()方法去重的只是相同的元素,第二种方法根据某个属性来去重,完美达成。
实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
private String stuNo;
private String name;
}
stream流根据集合中的元素的属性进行去重的方法的更多相关文章
- java8 list转map,list集合中的元素的属性转set,list集合中对象的属性转list
一.使用java8对list操作 1.1list转map private Map<String, Member> getMemberMap() { List<Member> m ...
- List使用Stream流进行集合Collection的各种运算汇总:对BigDecimal求和,某个字段的和、最大值、最小值、平均值,字段去重,过滤等
写Java接口的朋友都知道,Java 8的更新,经常会用到过滤 list<Object> 里的数据,本文就对List使用Stream流进行集合Collection的各种运算做一个汇总! 优 ...
- 在stream流和byte[]中查找(搜索)指定字符串
在 stream流 和 byte[] 中查找(搜索)指定字符串 这里注重看的是两个 Search 的扩展方法,一个是 stream 类型的扩展,另一个是 byte[] 类型的扩展, 如果大家有更好的“ ...
- c#---部分;把数组或者结构体存入集合里,然后再从集合中取出之后,输出;foreach既可以用到提取数组重点额数据,也可以提取集合中的数据(前提是集合中的元素是相同数据类型)
1.输入班级人数,统计每个人的姓名,性别,年龄:集合与数组 //Console.Write("请输入班级人数:"); //int a = int.Parse(Console.Rea ...
- 巧妙利用ToArray()函数移除集合中的元素
当我们对集合foreach遍历时,不能直接移除遍历的集合的元素,解决的方法有很多种,见我之前的随笔: http://www.cnblogs.com/527289276qq/p/4331000.html ...
- java如何对List集合中的元素进行排序(请收藏)
在java开发中有时候我们需要对List集合中的元素按照一定的规则进行排序,比如说有个Person的集合,我们要根据Person的age属性进行排序输出,这就需要用到Java中提供的对集合进行操作的工 ...
- list,set等集合遍历时,不能remove集合中的元素。需要new一个Object或者list,set,里面add需要删除的元素,等集合遍历完了进行remove(Object)或者removeAll(list/set)操作
list,set等集合遍历时,不能remove集合中的元素.需要new一个Object或者list,set,里面add需要删除的元素,等集合遍历完了进行remove(Object)或者removeAl ...
- 谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。
谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数. Google2009华南地 ...
- 删除 list 集合中的元素
删除 list 集合中的元素,当删除的元素有多个的时候,只能使用迭代器来删除. 当删除 list 集合中的元素只有一个的时候,有三种方法都可以实现. import java.util.ArrayLis ...
- 2018.9.17 面试问题-----如何对List集合中的元素进行排序?
Collections对List集合中的数据进行排序 有时候需要对集合中的元素按照一定的规则进行排序,这就需要用到 Java中提供的对集合进行操作的工具类Collections,其中的sort方法 先 ...
随机推荐
- python语法的入门
1.变量 1.1: 底层原理:现在内存空间申请一块地址来储存变量值, 然后把申请的内存地址跟变量名绑定在一起 之后只需通过访问变量名就可以获取变量值 1.2:一个变量名只能指向一个内存地址,但是一个内 ...
- hadoop伪分布式集群的安装(不是单机版)
准备工作 三台虚拟机,关闭防火墙,关闭selinux 查看防火状态 systemctl status firewalld 暂时关闭防火墙 systemctl stop firewalld 永久关闭防火 ...
- C51笔记-郭天祥-第二章 从点灯大师开始
第2章 Keil软件的使用及流水灯设计 Keil的用法:用Keil建立工程: 工程配置: C51单片机程序软件仿真.单步.全速.断点设置和变量查看等: 用一个完整的C51程序操控LED亮灭: 调用库 ...
- Linux修改远程命令端口
Linux修改远程命令端口 执行以下命令,修改sshd服务的配置文件 vi /etc/ssh/sshd_config 找到port,默认是注释了的 22 打开注释,将22改成想要的端口号 重启服务 s ...
- 你知道Object类和Objects的常用方法吗
文章目录 Object的常用方法 Objects的常用方法 hashCode hash isNull equals requireNonNull compare nonNull 大家好,Leo又来了! ...
- 基于 Rainbond 的混合云管理解决方案
内容概要:文章探讨了混合云场景中的难点.要点,以及Rainbond平台在跨云平台的混合云管理方面的解决方案.包括通过通过统一控制台对多集群中的容器进行编排和管理,实现了对混合云中应用的一致性管理.文章 ...
- Netty服务端开发及性能优化
作者:京东物流 王奕龙 Netty是一个异步基于事件驱动的高性能网络通信框架,可以看做是对NIO和BIO的封装,并提供了简单易用的API.Handler和工具类等,用以快速开发高性能.高可靠性的网络服 ...
- 使用ChatGPT4协助完成读取文件中不同字的数量
使用ChatGPT4识别:用java读取文件中不同字的个数. 解析:该程序将读取名为"file.txt"的文件,并计算文件中每个不同字的出现次数.它使用一些字符串操作来清理单词,并 ...
- 当Serverless遇到Regionless:现状与挑战
摘要:本文尝试基于分析现有的学术文章,剖析Serverless与Regionless并存时,在性能提升和成本控制两个方向的现状与挑战 本文分享自华为云社区<当Serverless遇到Region ...
- git拉取代码总提示输入密码解决方法
公司用的gitlab,在项目拉取(git clone)和更新(git pull)的时候,每次都提示输入用户名密码,不胜其烦,解决方法如下: # 首先 git config --global crede ...