上次对Stream流来进行分组的文章很多人看,想看的可以来这:

Stream流来进行集合分组

这次小编又带来Stream的去重,话不多数,直接上代码:

这是对简单数据类型的去重

	//字符串集合进行简单的去重(其他数据类型去重一样)
List<String> stringList = Arrays.asList("伽罗", "貂蝉", "芈月", "伽罗"); //jdk1.8Stream来去重
stringList = stringList.stream().distinct().collect(Collectors.toList()); System.out.println(JSON.toJSONString(stringList)); /**
* 执行结果:["伽罗","貂蝉","芈月"]
*
*/

对对象中的某一个属性来进行去重:

/**
实体类
*/
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data//lombok简化代码
@AllArgsConstructor
@NoArgsConstructor
public class Hero { //英雄id
private int id; //名字
private String name; //类型
private String type;
}
	//进行对象中的某个属性进行去重
List<Hero> list = Arrays.asList(
new Hero(001,"孙悟空","刺客"),
new Hero(002,"韩信","刺客"),
new Hero(003,"伽罗","射手"),
new Hero(004,"阿狸","射手"),
new Hero(005,"貂蝉","法师")); //需求:每一个职业只能保留一个英雄
//去重规则,先出现的保存,后出现的被去掉
list = list.stream()
.collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Hero::getType))), ArrayList::new)); System.out.println(JSON.toJSONString(list)); /**
* 执行结果:[{"id":1,"name":"孙悟空","type":"刺客"},{"id":3,"name":"伽罗","type":"射手"},
* {"id":5,"name":"貂蝉","type":"法师"}]
*/

这样就学会了,直接复制代码运行一下,照猫画虎不是难题,有什么问题请留言,还请各位大佬批评指正!!!!

Stream流用于按照对象中某一属性来对集合去重+简单数据类型集合的去重的更多相关文章

  1. JavaScript的事件对象中的特殊属性和方法(鼠标,键盘)

    鼠标操作导致的事件对象中的特殊属性和方法 鼠标事件是 Web 上面最常用的一类事件,毕竟鼠标还是最主要的定位设备.那么通过事件对象可以获取到鼠标按钮信息和屏幕坐标获取等 鼠标按钮 只有在主鼠标按钮被单 ...

  2. 在实体对象中访问导航属性里的属性值出现异常“There is already an open DataReader associated with this Command which must be closed first”

    在实体对象中访问导航属性里的属性值出现异常“There is already an open DataReader associated with this Command which must be ...

  3. js对象中动态读取属性值 动态属性值 js正则表达式全局替换

    $(document).ready(function(){ var exceptionMsg = '${exception.message }'; var exceptionstr = ''; //j ...

  4. 用于string对象中字符截取的几种函数总结——语法、参数意义及用途举例

    1. charAt():返回指定位置的字符. 语法:stringObject.charAt(index) 参数意义:index  必需,指字符在字符串中的下标.需要注意的是,字符串中第一个字符的下标是 ...

  5. JavaScript对象中的this属性

    this属性表示当前对象,如果在全局作用范围内使用this,则指代当前页面对象window: 如果在函数中使用this,则this指代什么是根据运行时此函数在什么对象上被调用. 我们还可以使用appl ...

  6. JavaScript 获取对象中第一个属性

    使用 Object.keys(object) 可以取出属性名为数组,但会打乱顺序 严格意义上对象中是只有映射关系而没有顺序的,但是在存储结构里是有顺序的,如果想获取存储结构里的第一个属性可以使用for ...

  7. django 获取request请求对象及response响应对象中的各种属性值

    django request对象和HttpResponse对象 HttpRequest对象(除非特殊说明,所有属性都是只读,session属性是个例外) HttpRequest.scheme 请求方案 ...

  8. Event对象中的target属性和currentTarget属性的区别

    先上结论: Event.target:触发事件的元素: Event.currentTarget:事件绑定的元素: 通过下面的例子来理解这两个属性的区别: 使用Event.target属性的例子:(我在 ...

  9. 对List集合中的对象中的某个属性进行排序

    今天在项目中遇到的问题,不能在sql中进行order by.所以将数据库中查询出来的集合,在java代码中进行排序 Collections.sort(list, new Comparator<H ...

随机推荐

  1. xampp搭建开源项目iwebshop后,服务器重启后再启动xampp显示组件都启动ok,但是实际启动失败解决办法

    最近用xampp搭建了开源商城项目iwebshop,刚搭建完没问题,可是周一来因为服务器重启了,我再启动xampp,显示组件都启动ok了,但是用linux命令查看相关组件的进程时,发现实际没启动起来, ...

  2. djinn靶机

    仅供个人娱乐 靶机信息 https://download.vulnhub.com/djinn/djinn.ova 一.主机探测 二.漏洞的查找和利用 21端口ftp 匿名登录 7331端口 命令执行  ...

  3. 记一次在Windows10桌面环境搭建Jekins的吐血经历

    目录 写在前面 故事背景 踩坑详情 最后总结 写在前面 首先声明,除非万不得已,千万不要在Windows环境做这个事情,否则就等着各种坑吧. 本人一贯的立场都是坚持用正确的方法做事,显然在Window ...

  4. 关于shell脚本——条件测试、if语句、case语句

    目录 一.条件测试 1.1.表达说明 1.2.test命令 文件测试 1.3.整数值比较 1.4.字符串比较 1.5.逻辑测试 二.if语句 2.1.单分支结构 2.2.双分支结构 2.3.多分支结构 ...

  5. [.NET大牛之路 007] 详解 .NET 程序集

    .NET大牛之路 • 王亮@精致码农 • 2021.07.13 上一篇我们介绍了 Roslyn 编译器,我们知道,我们编写的 C#/VB 代码经过 Roslyn 编译器编译后会生成程序集文件.按照之前 ...

  6. Java之Listener

    Java之Listener Listener监听器 监听器有很多种,大部分还是在GUI用的比较多,这里简单记录一点关于HttpSessionListener的 统计session count List ...

  7. SQL 练习37

    检索至少选修两门课程的学生学号 SELECT Student.SId,Student.Sname,选课数 from Student, (SELECT sid,COUNT(cid) 选课数 from s ...

  8. SpringBoot快速入门(一)

    本文内容 SpringBoot概述 SpringBoot快速入门 SpringBoot起步依赖原理分析 SpringBoot配置 SpringBoot整合其他框架 1.SpringBoot概述 1.1 ...

  9. vue路由history模式,nginx配置

    nginx配置内容 # For more information on configuration, see: # * Official English Documentation: http://n ...

  10. UDP与TCP的对比

    参考网址:https://blog.csdn.net/m0_38121874/article/details/82914634 1.报头(1)TCP协议报头TCP指传输控制协议,其报头格式如下: TC ...