前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >java List去重,根据多个字段属性去重

java List去重,根据多个字段属性去重

作者头像
acoolgiser
发布于 2023-12-06 06:35:11
发布于 2023-12-06 06:35:11
1.4K00
代码可运行
举报
文章被收录于专栏:acoolgiser_zhuanlanacoolgiser_zhuanlan
运行总次数:0
代码可运行

问题描述: 

如果我有一个A类,里面有5个字段,对于数组List<A> list,我想根据其中的2个字段来去重,如果2个字段都是一样的,只取最新的一条数据即可。

实现思路:

如果你有一个A类,并且想根据其中的两个字段进行去重,只保留最新的一条数据,那么你可以不定义一个新的类PersonId。在这种情况下,你可以使用Java中的Map来达到去重的效果。 你可以将A类中的两个字段作为键(key),将A类的对象作为值(value)。然后,遍历你的数据列表,将每个对象添加到Map中。如果Map中已经存在相同的键,则将原来的值替换为当前对象(假设最新的数据具有更高的优先级)。最后,你只需要从Map中获取值,就可以得到根据这两个字段去重后的最新数据。

示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.util.*;  
  
class A {  
    private String field1;  
    private String field2;  
    // 其他字段...  
      
    // 构造函数、getter和setter...  
}  
  
public class Main {  
    public static void main(String[] args) {  
        List<A> dataList = ... // 你的数据列表  
          
        Map<String, A> map = new HashMap<>();  
        for (A obj : dataList) {  
            String key = obj.getField1() + "," + obj.getField2(); // 根据两个字段生成键  
            if (!map.containsKey(key)) {  
                map.put(key, obj);  
            } else {  
                // 更新旧的数据(假设最新的数据具有更高的优先级)  
                map.put(key, obj);  
            }  
        }  
          
        // 从Map中获取去重后的数据列表  
        List<A> uniqueDataList = new ArrayList<>(map.values());  
          
        // 打印去重后的数据列表  
        for (A obj : uniqueDataList) {  
            // 处理数据...  
        }  
    }  
}

在上面的代码中,我们使用了一个字符串拼接的方式生成键(key),你可以根据自己的需求进行修改。此外,我们假设最新的数据具有更高的优先级,因此当遇到重复键时,会更新旧的数据。如果你希望根据其他规则进行去重,可以根据需要进行修改。

应该还有其他的方法。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java中的对象去重工具类——灵活、高效的去重解决方案
在日常开发中,我们经常会遇到需要对对象列表进行去重的需求。比如,从数据库中查询出一批用户数据,但其中可能存在重复记录,我们需要根据某些字段(如姓名、年龄等)来去除重复项。今天,我将分享一个非常实用的Java工具类——DeduplicationUtils,它可以帮助我们轻松实现基于对象字段的灵活去重。
訾博ZiBo
2025/01/24
960
Java程序设计(高级及专题)- 泛型/容器(集合框架)
JAVA集合框架:java中用来表示集合,和操作集合的所有类库的统称 JAVA中的集合从大方向分有两种:Collection 集合,Map 集合,它们都继承自Object
全栈程序员站长
2022/08/04
5530
Java程序设计(高级及专题)- 泛型/容器(集合框架)
java之集合(Set、List、Map)
HashSet是Set接口的典型实现,大多数时候使用Set集合时都会使用这个实现类。我们大多数时候说的Set集合指的就是HashSet。
西西嘛呦
2020/08/26
5310
Java集合(四)--treeset/treemap/章节练习题目/去重原理的解读和应用
下面的这个就是对于这个treeset结构进行测试的一个程序,在这个里面,add表示的就是对于这个树上面进行元素的添加,打印的结果也是无序的;
阑梦清川
2025/02/24
1240
Java集合(四)--treeset/treemap/章节练习题目/去重原理的解读和应用
EasyExcel导出自动回显中文,读取自动转换码值(基于全局转换器与自定义注解)
在实际业务中,我们经常需要将数据库中的码值(如 1, 2, 3)在导出Excel时显示为中文(如“进行中”、“已完成”、“已取消”),而在导入Excel时,用户填写的中文需要自动转换为对应的码值。本文将介绍如何通过全局转换器(GlobalCodeConverter) 和自定义注解实现这一功能,结合数据库动态查询码表,提升代码复用性和可维护性。
Java微观世界
2025/04/02
2420
第51节:Java当中的集合框架Map
Sunday(星期天)、Monday(星期一)、Tuesday(星期二)、Wednesday(星期三)、Thursday(星期四)、Friday(星期五)、Saturday(星期六)
达达前端
2019/07/03
5990
第51节:Java当中的集合框架Map
后端思维专栏:通过层层代码去重,我又搞了一个通用模板
最近工作中,我通过层层优化重复代码,最后抽出个通用模板.因此跟大家分享一下优化以及思考的过程。我会先造一个相似的例子,然后一步步带大家如何优化哈,看完一定会有帮助的。
捡田螺的小男孩
2023/09/03
3530
后端思维专栏:通过层层代码去重,我又搞了一个通用模板
Java8使用Stream实现List中对象属性的合并(去重并求和)
在需求开发中,我们需要对一个List中的对象进行唯一值属性去重,属性求和,对象假设为Pool,有name、value两个属性,其中name表示唯一值,需要value进行求和,并最后保持一份对象。
一个正经的程序员
2022/04/11
7.9K0
List字段转换工具 – ConvertFiledUtil
在针对page或者list接口的时候,需要转换对应的属性值是比较麻烦的。需要我们手动遍历对象,然后编写对应的转换方法。在多个转换的字段的时候,代码是非常长的。本工具可以一行实现字段转换。我个人觉得较为优雅。
收心
2025/04/06
620
基于DB4O的Java Map
大家好,又见面了,我是你们的朋友全栈君。 Java的Map是大家最常用的一个容器接口,它通过灵活的key/value结构存储数据。因为Map的简单易用很多工程师喜欢大量使用Map存放数据。但是Map的数据是存放在内存中,大量的数据存在内存中,不只是 造成Java系统内存遍历慢的隐忧,更加可能 系统内存溢出。
全栈程序员站长
2022/09/13
2920
jeecgboot 改造@Dict注解 实现可以翻译list集合 实体 以及map集合
jeecgboot 改造@Dict注解 实现可以翻译list集合 实体 以及map集合 jeecgBoot框架的@dict字典翻译注解挺好用的 支持翻译数据字典和数据库 但是他默认的@dict注解只支持分页翻译 其他的是不支持的 上源码 /** * 本方法针对返回对象为Result 的IPage的分页列表数据进行动态字典注入 * 字典注入实现 通过对实体类添加注解@dict 来标识需要的字典内容,字典分为单字典code即可 ,table字典 code table text配合使用与原来j
@依然范特西
2023/03/08
3.1K0
JAVA常用API整理
提供sin, cos, tan, exp, log, log10 等类方法,PI和E等类字段
lyb-geek
2018/09/27
2.1K0
JAVA常用API整理
Java 集合
Java 集合是一个常用的技术 ,无论是在: 开发使用,还是面试总是高频的提及到~
Java_慈祥
2024/08/06
1260
Java 集合
全网最全情景,深入浅出解析JavaScript数组去重:数值与引用类型的全面攻略
在日常开发中,数组去重是一个不可避免的话题。不管是简单的数值数组去重,还是复杂的引用类型数组去重,掌握多种方法可以帮助开发者高效、优雅地解决实际问题。在这篇博客中,我们将从基础到进阶,结合大量代码案例,系统介绍数组去重的各种技巧。
watermelo37
2025/01/22
1890
全网最全情景,深入浅出解析JavaScript数组去重:数值与引用类型的全面攻略
【小家java】Java之Apache Commons-Collections4使用精讲(Bag、Map、List、Set全覆盖)
虽然JDK提供给我们的集合框架已经足够强大,基本能解决我们平时的绝大所述问题,并且效率还挺高。
YourBatman
2019/09/03
3.1K0
【小家java】Java之Apache Commons-Collections4使用精讲(Bag、Map、List、Set全覆盖)
JAVA--Map集合详解
特点:该集合存储键(key)值(value)对,一对一对往里存,而且要保证键(key)的唯一性。
用户7886150
2021/04/25
6520
Java中遍历HashMap的5种方式
HashMap是Java中最常用的集合之一,它实现了Map接口并提供了键值对的映射。在Java中,HashMap是一个非同步的类,它的主要目的是为了快速的数据访问和搜索。
王也518
2024/04/17
3170
Java中遍历HashMap的5种方式
Redis-04Redis数据结构--哈希hash
Redis 中哈希结构就如同 Java 的 map 一样 , 一个对象里面有许多键值对,它是特别适合存储对象的.
小小工匠
2021/08/17
6550
【小家Spring】Spring Framework提供的实用纯Java工具类大合集(一)
在Spring Framework里的spring-core核心包里面,有个org.springframework.util里面有不少非常实用的工具类。
YourBatman
2019/09/03
4.8K1
【小家Spring】Spring Framework提供的实用纯Java工具类大合集(一)
Java集合类
集合类其实就是为了更好地组织、管理和操作我们的数据而存在的,包括列表、集合、队列、映射等数据结构。
用户9645905
2023/10/23
2980
Java集合类
推荐阅读
相关推荐
Java中的对象去重工具类——灵活、高效的去重解决方案
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验