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方法 先 ...
随机推荐
- [Linux]命令行分类
0 操作系统 / 编译 / 进程 / 内存 / 硬盘 / 硬件 hostname / hostnamectl / uname hostnamectl set-hostname xxxx 重置hostn ...
- [中间件]Fastjson [转载]
1 Fastjson的安全漏洞 本段摘自: fastjson到底做错了什么?为什么会被频繁爆出漏洞? 前段时间,fastjson被爆出过多次存在漏洞,很多文章报道了这件事儿,并且给出了升级建议. 但是 ...
- 【牛客小白月赛70】A-F题解【小d和超级泡泡堂】【小d和孤独的区间】【小d的博弈】【小d和送外卖】
比赛传送门:https://ac.nowcoder.com/acm/contest/53366 难度适中. 作者:Eriktse 简介:19岁,211计算机在读,现役ACM银牌选手力争以通俗易懂的方式 ...
- ChatGPT4实现前一天
目录 提出需求 代码实现 需求分析 单元测试 等价类划分 决策表 软件测试作业,用ChatGPT4来帮个小忙,小划水,勿喷勿喷,近期有相关作业的同学看到我的文章,建议修改一下,别撞车了,哈哈哈~ 提出 ...
- Semantic Kernel 入门系列:💬Semantic Function
如果把提示词也算作一种代码的话,那么语义技能所带来的将会是全新编程方式,自然语言编程. 通常情况下一段prompt就可以构成一个Semantic Function,如此这般简单,如果我们提前可以组织好 ...
- ros-python学习样例笔记
1.通信基本原理介绍 待写 2.三种通信方式的程序样例(python版) 2.1 topic 通信方式(非自定义和自定义) 2.1.1 创建工作空间和topic功能包 在ubuntu中打开命令行,输入 ...
- 【Dotnet 工具箱】跨平台图表库 LiveCharts2
你好,这里是 Dotnet 工具箱,定期分享 Dotnet 有趣,实用的工具和组件,希望对您有用! LiveCharts2 LiveCharts2 是一个简单.灵活.交互式以及功能强大的跨平台图表库. ...
- 用PHPstudy nginx 配置tp6 隐藏访问链接中的index.php
在server 里面加上如下这个判断就好了 if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$1 last; break; 配置在对应网 ...
- 33-webpack详细配置output
const { resolve } = require('path') const HtmlWebpackPlugin = require('html-webpack-plugin') module. ...
- 笔记:C++学习之旅---try语句和异常处理
异常处理机制为程序中异常检测和异常处理这两部分的协作提供支持,在C++语言中,异常处理包括: *throw表达式(throw expression),异常检测部分使用throw表带是来 ...