集合去重 (集合元素为引用类型)--- java 8 新特性 --- 根据元素单属性、多属性实现去重

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

1. 代码写法: (要求 JDK 1.8 或 1.8 以上)

package gentle.entity;import lombok.Data; /**** @author silence* @date 2018/7/6 10:58*/
@Data // 此注解可自动生成set/get、自动重写equals/hashcode 等,不用在代码中书写相关代码。public class User {private String name;private int age;public User( String name, int age) {this.name = name;this.age = age;}
}
  /***  for循环* @param list* @param <T>*/public static <T> void listFor(List<T> list) {list.forEach(each -> System.out.print(each+" "));}/*** 按对象属性去重** @return*/public static List<User> deleteSameByOne(List<User> users) {// 1.单个属性去重return users.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(User::getAge))),ArrayList::new));}/*** 按对象属性去重** @return*/public static List<User> deleteSameByMany(List<User> users) {// 2.多属性去重:把多个属性拼起来( 本质上还是单属性去重 )return users.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(userDep -> userDep.getName() + userDep.getAge()))),ArrayList::new));}/*** 基本数据类型去重** @param list* @param <T>* @return*/public static <T> List<T> deleteSame(List<T> list) {return list.stream().distinct().collect(Collectors.toList());}

2. 测试:

List<User> userList = new ArrayList<User>(){{add(new User("花间",24));}{add(new User("暮云",28));}{add(new User("暮云",28));}{add(new User("彻风",24));}{add(new User("弥禁",16));}{add(new User("清寞",24));}};System.out.println("去掉同龄的:\n"+deleteSameByOne(userList));System.out.println("去掉同龄且同名的:\n"+deleteSameByMany(userList));

3. 运行结果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/448673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django--Forms组件使用

Forms组件的使用 在html表单验证中&#xff0c;需要通过各种信息的验证&#xff0c;比如注册界面的姓名、密码、邮箱、电话等的验证&#xff0c;是否符合定义好的规则&#xff0c;不可能每次都要取出对应的字段一一判断&#xff0c;django内置了Forms组件&#xff0c;可以方便的…

yii2关联表

asArray()这个方法很好用&#xff0c;返回数组是1版本想要的形式&#xff0c;这种方式有种tp框架的感觉转载于:https://www.cnblogs.com/peipeiyu/p/10974487.html

详细程序注解学OpenCL一 环境配置和入门程序

本专栏是通过注解程序的方法学习OpenCL&#xff0c;我觉得一个一个地去抠原理也不是办法&#xff0c;干脆直接学习程序&#xff0c;然后把相关原理都直接注解到程序语句当中。 原创地址&#xff1a;http://blog.csdn.net/kenden23/article/details/14101657 一开始要配置好环境…

解决 IDEA 在 commit 代码时 git 日志乱码 (提交时填写的中文说明乱码)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1.问题描述&#xff1a; idea 开发代码中的 中文正常&#xff0c;但提交到码云时填写的提交日志是乱码。 提交到码云后是这样的&#…

Box 类

public class Box extends JComponent implements Accessible使用 BoxLayout 对象作为其布局管理器的一个轻量级容器。Box 提供几个对使用 BoxLayout 的容器&#xff08;甚至非 Box 容器&#xff09;有用的类方法。 Box 类可以创建几种影响布局的不可见组件&#xff1a;glue、s…

神奇的pdfkit工具——将字符串保存为pdf文件

神奇的pdfkit工具——将字符串保存为pdf文件 1、安装工具包 pip install pdfkit 2、上干货 import pdfkitdef create_pdf(str_data, to_file):将字符串生成pdf文件 # &#xff08;需下载wkhtmltox&#xff09;将程序路径传入config对象config pdfkit.configuration(wkhtmltopd…

OpenCL结构

原标题&#xff1a;从零开始学习OpenCL开发&#xff08;一&#xff09;架构 1 异构计算、GPGPU与OpenCL OpenCL是当前一个通用的由很多公司和组织共同发起的多CPU\GPU\其他芯片 异构计算&#xff08;heterogeneous&#xff09;的标准&#xff0c;它是跨平台的。旨在充分利用GP…

docker-compose 使用小例

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 只是一个很简单的小例。 1. 原本有的容器 2. docker-compose.yml 写法&#xff1a; gentle 处可以任意写&#xff0c;gentle 是我的项…

2019.6.20

今日内容 MongoDB可视化工具 一、Scrapy爬虫框架 二、微信机器人 转载于:https://www.cnblogs.com/jrc123/p/11062606.html

PCL点云 Lebel:Research

https://blog.csdn.net/wokaowokaowokao12345/article/details/73741957 https://blog.csdn.net/u010696366/article/category/3108337转载于:https://www.cnblogs.com/radiumlrb/p/10986918.html

AMD GPU+VS2010的OpenCL配置

安装开发环境可以参照DE4-530的OpenCL开发环境搭建&#xff08;最终版&#xff09;&#xff0c;这篇文章的大部分内容转载自&#xff1a;http://www.verydemo.com/demo_c92_i226325.html AMD的Heterogeneous Computing有很多AMD的OpenCL资料&#xff0c;包括各种分析工具&#…

ABP开发框架前后端开发系列---(9)ABP框架的权限控制管理

在前面两篇随笔《ABP开发框架前后端开发系列---&#xff08;7&#xff09;系统审计日志和登录日志的管理》和《ABP开发框架前后端开发系列---&#xff08;8&#xff09;ABP框架之Winform界面的开发过程》开始介绍了权限管理的内容&#xff0c;其中只是列出了内部的权限系统的审…

GIL , 线程池 , 同步 , 异步 , 队列 , 事件

一.什么是GIL 官方解释:In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython’s memory management is not thread-safe. (Howev…

Docker - Compose 使用说明、详解docker-compose

Compose 模板文件 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 模板文件是使用 Compose 的核心&#xff0c;涉及到的指令关键字也比较多。但大家不用担心&#xff0c;这里面大部分指令…

在Windows下使用OpenCL配置

前言 目前&#xff0c;NVIDIA 和 AMD 的 Windows driver 均有支持OpenCL&#xff08;NVIDIA 的正式版 driver 是从自195.62 版开始&#xff0c;而 AMD则是从9.11 版开始&#xff09;。NVIDIA 的正式版 driver 中包含 OpenCL.dll&#xff0c;因此可以直接使用。AMD 到目前为止…

Linux下启动mongodb

完成安装mongodb&#xff08;略&#xff09; 创建数据目录&#xff1a; # mkdir /data/mongo 创建配置文件 # vi /data/mongo/mongodb.cnf dbpath/data/mongo/ logpath/data/mongo/mongo.log logappendtrue forktrue port27017 或者&#xff1a;不创建配置文件通过mongod参数启…

Linux调优(文件系统)

查看单个文件是否发生碎片化&#xff08;被存在磁盘非连续磁盘块上&#xff09;# filefrag -v /var/log/messages 查看文件系统是否存在大量碎片&#xff08;会显示空闲离散的块&#xff09;# dumpe2fs /dev/sda1 检查文件系统中是否有错误产生# fsck /dev/sdb1 1、格式化相关 …

使用 nohup 设置后台进程

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 引言&#xff1a; 有时候需要在Linux上设置一个后台进程&#xff0c;但是当你关闭terminal之时&#xff0c;它会被系统kill掉&#xff0…

CVE-2019-0708 BlueKeep的扫描和打补丁

2019独角兽企业重金招聘Python工程师标准>>> 简介 CVE-2019-0708 BlueKeep是一个Windows远程桌面服务的远程代码执行漏洞&#xff0c;其危害程度不亚于CVE-2017-0143 EternalBlue&#xff0c;该漏洞影响了某些旧版本的Windows系统。此漏洞是预身份验证&#xff0c;无…

《OpenCL异构计算》新版中译本派送中!

《OpenCL异构计算1.2》新鲜出炉&#xff0c;目前市面上仍一书难求&#xff01;我们已向清华出版社订购到第一批新书。关注异构开发社区&#xff0c;积极参与&#xff0c;就有可能免费获取新书&#xff01; 1.如果您异构社区的老朋友&#xff0c;请关注&#xff1a;10.1假期后我…