iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >java List<对象> 根据对象的一个属性进行去重
  • 230
分享到

java List<对象> 根据对象的一个属性进行去重

javalist 2023-09-01 10:09:28 230人浏览 安东尼
摘要

1.如果你想根据对象的一个属性进行去重,可以使用Java 8中的Stream api。具体步骤如下: 实现一个自定义函数,该函数将用于确定两个对象是否相等,例如: public static Predicate distinctByPro

1.如果你想根据对象的一个属性进行去重,可以使用Java 8中的Stream api。具体步骤如下:

实现一个自定义函数,该函数将用于确定两个对象是否相等,例如:

public static  Predicate distinctByProperty(Function keyExtractor) {    Map map = new ConcurrentHashMap<>();    return t -> map.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;}

这个函数接受一个Function对象作为参数,该函数将从对象中提取唯一标识属性,并使用ConcurrentHashMap来确定是否已经处理过该属性值。 

 2.现在你可以使用这个函数来进行去重了,例如:

List myList = ... // Your list of objectsList distinctList = myList.stream().filter(distinctByProperty(MyObject::getSomeProperty)).collect(Collectors.toList());

 这个代码将对myList进行去重,只保留唯一的对象(即,他们的某个属性相同)。其中,getSomeProperty是MyObject类中的一个方法,它返回用于去重的属性

2.一行代码完成

ArrayListlist1=list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->newTreeSet<>(Comparator.comparing(BasicSectionCfg::getPamKey))),ArrayList::new));

这段代码使用Java 8中的流API将一个ArrayList进行去重并转换成另一个ArrayList。

具体来说,大致可以分为以下几步:

  1. 使用stream()方法将原始的ArrayList转换成一个流Stream
  2. 使用collect()方法将流Stream收集并转换成另一个集合。collect()方法接收一个Collector对象,并且Collectors类中提供了许多预定义的Collector实现,方便我们使用。在本段代码中,我们使用了Collectors.collectingAndThen()方法,它将一个Collector转换成另一个Collector,并在最后的结果上进行一些操作。
  3. 在Collectors.collectingAndThen()方法中,我们传递了两个参数:
    1. 第一个参数是Collectors.toCollection()方法,它创建了一个新的TreeSet集合,该集合使用Comparator.comparing()方法来对元素进行排序。其中Comparator.comparing()方法接收一个Function参数,该函数用于提取对象的某个属性,这里我们使用BasicSectionCfg::getPamKey方法来提取BasicSectionCfg对象的pamKey属性。
    2. 第二个参数是一个lambda表达式,它将TreeSet转换成ArrayList集合。具体地,它调用了ArrayList的构造函数,并将TreeSet作为参数传递给构造函数。

最终,这段代码的作用就是将list中的重复元素去重,并按照BasicSectionCfg对象的pamKey属性进行排序,得到一个新的ArrayList集合。

来源地址:https://blog.csdn.net/sunyanhu_1/article/details/131469357

--结束END--

本文标题: java List<对象> 根据对象的一个属性进行去重

本文链接: https://www.lsjlt.com/news/388127.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java List<对象> 根据对象的一个属性进行去重
    1.如果你想根据对象的一个属性进行去重,可以使用Java 8中的Stream API。具体步骤如下: 实现一个自定义函数,该函数将用于确定两个对象是否相等,例如: public static Predicate distinctByPro...
    99+
    2023-09-01
    java list
  • java如何根据List内对象的属性进行排序
    这篇文章主要介绍了java如何根据List内对象的属性进行排序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。方法一:实现Comparator接口,并重写compare方法实体...
    99+
    2023-05-30
  • java 对象List中对象的某一属性重新赋值
    描述: 在我们开发过程中经常会遇到在拿到一个对象list集合的时候回对某一个字段重新赋值,比如:在无任务下面的若干子任务,开始执行主任务对子任务的状态统一设置待执行。这个时候就需要使用 Java8 s...
    99+
    2023-09-01
    java
  • 根据list中对象的属性去重和排序小结(必看篇)
    如下所示://去重public class User { private int id; private String name; private int age; public User(){} public...
    99+
    2023-05-31
    java list 对象
  • 怎么在java8项目中对List对象属性去重
    怎么在java8项目中对List对象属性去重?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。第一种: 不使用java8 private Lis...
    99+
    2023-06-14
  • java8实现List中对象属性的去重方法
    java8的stream流能完美解对象集合去重问题. List<UserCar> list1 = new ArrayList(); UserCar userCa...
    99+
    2024-04-02
  • java 对象list使用stream根据某一个属性转换成map的几种方式
    可以使用Java 8中的Stream API将List转换为Map,并根据某个属性作为键或值。以下是一些示例代码: 将List转换为Map,键为某个属性,值为对象本身 List personList = ... // 假设这是一个Perso...
    99+
    2023-08-17
    java spring boot stream list
  • java8如何根据list对象中的属性过滤筛选
    目录根据list对象中的属性过滤筛选根据性别筛选出所有的女同学list根据对象某个字段或多个字段去重、筛选、List转Map、排序、分组、统计计数等简单示例如下过滤筛选分组去重Lis...
    99+
    2024-04-02
  • 利用java怎么对两个对象的属性进行比较
    利用java怎么对两个对象的属性进行比较?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。两个对象进行比较相等,有两种做法:1、情况一:当仅仅只是判断两个对象是否相...
    99+
    2023-05-31
    java ava
  • java怎么根据属性获取枚举对象
    在Java中,可以使用`Enum.valueOf()`方法根据属性值获取枚举对象。假设有一个名为`Color`的枚举类,包含颜色的属...
    99+
    2023-10-12
    java
  • 使用list stream:对List中的对象先进行排序再获取前n个对象
    目录list stream:对List中的对象先进行排序再获取前n个对象接下来我们就来看一下这个方法通过自定义一个的对象比较方法来进行排序将上面实例中的TestUser对象贴出来对L...
    99+
    2024-04-02
  • jquery怎么根据属性值获取对象
    要根据属性值获取对象,可以使用jQuery的选择器方法。可以使用特定的属性选择器来选择具有特定属性值的元素。例如,如果要根据一个元素...
    99+
    2023-08-17
    jquery
  • Java中HashSet集合怎么对自定义对象进行去重
    本篇内容介绍了“Java中HashSet集合怎么对自定义对象进行去重”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Java中Set接口是Co...
    99+
    2023-06-16
  • java中list对象拷贝至新的list对象并保持两个对象独立的方法
    在Java中,如果你想拷贝一个List对象到一个新的List对象,并且修改原来的List不影响新的List中的内容,有几种方法可以实现: 使用构造函数: 可以使用List的构造函数,传递原始List作...
    99+
    2023-09-14
    java list
  • JavaScript如何利用对象的属性不能相同的特点进行去重
    这篇文章给大家分享的是有关JavaScript如何利用对象的属性不能相同的特点进行去重的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。利用对象的属性不能相同的特点进行去重(这种数组去重的方法有问题,不建议用,有待改...
    99+
    2023-06-17
  • java的list数组按数组中对象的某个属性排序
    在 Java 中,可以使用 Collections.sort() 方法和 Comparator 接口来对 List 中的对象按照对象的某个属性进行排序。以下是一个示例代码: 假设有一个 Person 类,它包含一个 name 字符串属性和一...
    99+
    2023-08-18
    java 开发语言 jvm
  • wpf怎么绑定一个对象的多个属性
    在WPF中,可以使用绑定表达式来绑定一个对象的多个属性。首先,需要创建一个实现了INotifyPropertyChanged接口的类...
    99+
    2023-09-06
    wpf
  • 怎么用javascript对象删除一个属性
    这篇文章主要介绍“怎么用javascript对象删除一个属性”,在日常操作中,相信很多人在怎么用javascript对象删除一个属性问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • 【java】List对象集合去除特定对象的优雅写法(基于java8)
    【java】List对象集合去除特定对象的优雅写法(基于java8) 主要用的是 Java List.removeIf方法,该方法用于删除所有满足特定条件的数组元素,入参其实是一个布尔值的表达式即可。 使用场景,用户类中的性别字段有三个,分...
    99+
    2023-08-17
    java servlet 开发语言
  • 对command对象属性及其方法进行介绍说明
    在Java中,Command对象是一个表示命令的抽象类,它用于封装一个操作的信息,包括命令的名称、参数等。Command对象可以用于...
    99+
    2023-09-22
    command
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作