java8 List对象去重(按照对象属相去重)

2023-05-16

/**
*  方式一:去重后对象在集合的顺序变化
*  List对象去重,按照对象的某个字段去重,返回去重后新的对象集合
* 
**/
public static void main(String[] args) {

    List<Student> list = new ArrayList<>();
    list.add(Student.builder().stuNo("23444").name("test").build());
    list.add(Student.builder().stuNo("11111").name("test2").build());
    list.add(Student.builder().stuNo("6666").name("test3").build());
    list.add(Student.builder().stuNo("11111").name("test5").build());
	
	// 方式一:单属性去重
    List<Student> unique1 = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Student::getName))), ArrayList::new));

	// 方式一:多属性去重
    List<Student> unique1 = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Student::getName).thenComparing(Test::getStuNo))), ArrayList::new));



}

/**
*  方式二:去重后对象在集合中顺序跟原集合一样
*  List对象去重,按照对象的某个字段去重,返回去重后新的对象集合
*  使用方法:用Stream接口的 filter()接收为参数
* */
 public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
    Map<Object,Boolean> seen = new ConcurrentHashMap<>();
    return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
 }   
    // filter单属性去重
    System.out.println(JSONObject.toJSONString(collect.stream().filter(distinctByKey(Test::getAid)).collect(Collectors.toList())));
    // filter多属性去重
    System.out.println(JSONObject.toJSONString(collect.stream().filter(distinctByKey(test -> Stream.of(test.getAid(),test.getUid()).toArray())).collect(Collectors.toList())));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java8 List对象去重(按照对象属相去重) 的相关文章

  • Debian 源(source.list)

    在debian下 xff0c 用apt方式安装软件除了可以以网络上的资源为源之外 xff0c 还可以使用本地的资源 下面我就以安装GCC的过程为例 xff0c 说一下整个过程 平台 xff1a debian 4 0 图形界面 资源 xff1
  • boa 编译步骤&&常见错误

    第一步 xff1a 源码包 xff1a boa 0 94 13 tar gz 解压 tar xvf 第二步 xff1a 你会看到10个文件 xff0c 其中有一个是src xff0c 直接进入 src文件目录下 第三步 xff1a 配置 x
  • 推荐几款SSH工具

    SSH 是建立在应用层基础上的安全协议 xff0c 专为远程登录会话和其他网络服务提供安全性的协议 利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题 SSH最初是UNIX系统上的一个程序 xff0c 后来又迅速扩展到其他操作平台
  • WinForm应用实战开发指南 - 如何设计展示应用程序主界面

    WinForm应用程序的开发 xff0c 主窗口的界面设计一般都要求做的更好一些 xff0c 可以根据不同的系统功能模块进行归类整合 xff0c 能使客户迅速寻找到相关功能的同时 xff0c 也能感觉到整体性的美观大方 xff0c 因此主窗
  • PX4+光流模块MTF01的一点使用心得

    1 不知道怎么样把这个给接到飞控的串口4上 应该是因为没找到地方设置串口4的波特率啥的 xff0c 最后还是接到了TELEM2接口上 xff0c 又设置了一下波特率才好用 2 定高效果很好 xff0c 定位效果也还行 3 在出现位置模式下y
  • [论文] Feature Squeezing:Detecting Adversarial Examples in Deep Neural Networks

    思路 xff1a 对抗样本经过feature squeeze处理后大部分增加的干扰会被消除或者减小 xff0c 致使feature squeeze前后的分类结果向量 xff08 distributed vector xff09 L1距离很大
  • 手把手教用matlab做无人驾驶(三)-路径规划A*算法

    这里 xff0c 我们更新主程序如下 xff1a editor Robert Cao 2018 9 1 clc clear all close all disp 39 A Star Path Planing start 39 p start
  • eve-ng导入华为路由器镜像

    iol位置 opt unetlab addons iol bin qemu位置 xff1a opt unetlab addons qemu 设备图标位置 opt unetlab html images icons 设备脚本位置 opt un
  • ROS入门保姆级教程:7-ROS话题通信实现2:自定义消息类型(msg)

    ROS入门往期 xff1a ROS入门保姆级教程 xff1a 1 hello world初体验 ROS入门保姆级教程 xff1a 2 VScode中使用ROS ROS入门保姆级教程 xff1a 3 ROS文件系统 ROS入门保姆级教程 xf
  • 设计模式---订阅发布模式(Subscribe/Publish)

    订阅发布模式定义了一种一对多的依赖关系 xff0c 让多个订阅者对象同时监听某一个主题对象 这个主题对象在自身状态变化时 xff0c 会通知所有订阅者对象 xff0c 使它们能够自动更新自己的状态 将一个系统分割成一系列相互协作的类有一个很
  • 能ping通虚拟机,但ssh连接不上,访问虚拟机服务也不行NAT

    自己的windows ip 跟虚拟机的ip一样 xff0c 产生错觉 xff0c 其实ping的是自己的window主机 xff0c 修改windows 地址后就可以了
  • html5是什么?五大浏览器、网页基本骨架结构与含义、常用标签——学习HTML5第一天的心得总结,若有错误望指正,我将持续更新与大家共同进步。

    注意 xff1a 上方P标签所说的块元素不可嵌套块元素是指在p元素中不建议嵌套块元素 xff0c 如不建议 lt P gt lt div gt lt div gt lt P gt 这种嵌套 xff0c 其他块元素则根据需求嵌套即可 1 ht
  • 新手入门 - 详解 frp 内网穿透 frpc.ini 配置

    本文为 Stille 原创文章 经实践 测试 整理发布 如需转载请联系作者获得授权 并注明转载地址 转载地址 xff1a 新手入门 详解 frp 内网穿透 frpc ini 配置 思有云 IOIOX 前言 本站关于 frp 内网穿透的相关教
  • pixhawk硬件设计粗略解析

    文章目录 前言一 pixhawk是什么 xff1f 二 pixhawk硬件解析总结 前言 本片是个人对NFCYv5飞控的硬件设计的个人分析与笔记 为什么要这么做呢 xff1f 原因很简单 xff0c 一是对pixhawk硬件组成有更加深入的
  • Android IPC机制

    本文首发于个人博客 胖蔡叨叨叨 xff0c 更多相关信息可点击查看 Android IPC机制 IPC IPC Inter Process Communication 进程间通信 xff0c 是指系统中运行的不同进程间的信息交互过程 And
  • PX4的控制与输出

    文章目录 前言控制器部分输出部分控制组混控器混控器的启动信号输出 前言 这篇记录一下自己分析PX4从位置控制 gt 速度控制 gt 姿态控制 gt 角速度控制 gt 电机输出的源码框架的阅读与理解 xff0c 便于之后自己修改控制器 在这个
  • 悬停油门的参数估计方法

    悬停油门的参数估计方法 估计悬停油门 xff0c 实际上就是完成油门值与飞机加速度之间的映射关系 xff0c 准确的估计值可以让飞行控制更为准确 在PX4中 xff0c 对悬停油门的估计方法采用的是扩展卡尔曼滤波 xff0c Fast dr
  • D435/D435i使用技巧

    D435 D435i使用技巧 D435 D435i是目前市场上使用最为方便的双目深度相机 虽然淘宝上其价格有些让人望而却步 xff0c 但是咸鱼上成色不错的D435 D435i 价格就在1000左右 xff0c 依旧是自主无人机视觉定位和感
  • PX4 imu传感器配置

    PX4 传感器配置 坐标系定义 旋转变化 reference 在机器人中各个坐标系之间的变换是非常常见的 xff0c 而在ROS tf 工具中 xff0c 以及Eigen 中 我们常常会见到RPY的旋转表示和四元数的旋转表示 当然学航空出生
  • PX4常用sh命令

    PX4常用sh命令 基于NUTTXnsehll的设计 xff0c PX4还自定义了一些sh命令 xff0c 可以在调试飞控时起到重要作用 这些命令在PX4开发者手册中 xff0c 都有提到 但是为了方便后期使用 xff0c 这里再单独做一下

随机推荐