jdk1.8如何找到List集合中重复对象_jdk1.8中查询出list中重复的值-程序员宅基地

技术标签: List去重  jkd1.8新特性  Collectors.groupingBy  List剔除重复对象  Java 基础  

项目在开发大批量导入功能的时候,除了要要将导入的每一行和数据库比对,校验数据是否已经存在,还要判断自身导入的EXCEL数据里的重复数据呢。
List里对象属性特别多,而且可能有变化,如何快速的过滤数据…
jdk 1.8以后对集合操作提供了流对象的便捷操作,可以实现以上需求,废话不多说,程序猿还是直接看代码直观一些!!!!

第一步、利用lombokjar包里的EqualsAndHashCode注解,用于判断对象的唯一性,默认不做其他配置会使用所有参数,如果要剔除个别的属性,需要设置exclude,这个根据自己项目需求做配置即可

package xxxxxxxxxx;

import xxxxxxxx;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.poi.xssf.usermodel.XSSFRow;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**导入实体类
 * @author xxx
 */
@Data
@EqualsAndHashCode(exclude = {"xu","description"})
public class TestPlanAddImportVo {



    private String supplierCode;
    private String xu;
    private String legalCode;
    private String testPlanTypeName;

    private Long testPlanType;

    private String productLineCode;

    private String partsSourceTypeName;
    private Long partsSourceType;

    private String procurementPlanTypeName;


    private String partsCategoryCode;

    private String materialCode;
    private String branchOrganizationCode;

    private String eleTestModeName;

    private String surTestModeName;

    private Long eleTestMode;

    private Long surTestMode;

    private String description;


    public TestPlanAddImportVo(){}



}

第二步、

List<TestPlanAddImportVo> addImportVoList =  省略poi获取excel的代码.......;
Map<TestPlanAddImportVo, List<TestPlanAddImportVo>> collect = addImportVoList.stream().collect(Collectors.groupingBy(Function.identity()));
        for(Map.Entry<TestPlanAddImportVo, List<TestPlanAddImportVo>> entry : collect.entrySet()){
            if(entry.getValue().size()>1){
                System,out.printLin(entry.getValue().get(0).getXu()"+"和序"+"entry.getValue().get(1).getXu()+"数据重复");
            }
        }

注意:Collectors.groupingBy(Function.identity())会根据自身对象做唯一key分组,分组后的Value是List集合,正常value的长度应该是1,如果大于1,说明就肯定存在重复项!!!!!!!!!!!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wujian_csdn_csdn/article/details/97271340

智能推荐

广工数据结构实验报告哈希表设计完整版,含有源代码,报告-程序员宅基地

文章浏览阅读375次,点赞7次,收藏9次。实验要求如下:1.首先了解设计的任务,然后根据自己的基础和能力从中选择一题。一般来说,选择题目应以在规定的时间内能完成,并能得到应有的锻炼为原则。 若学生对教材以外的相关题目较感兴趣,希望选作实验的题目时,应征得指导教师的认可,并写出明确的抽象数据类型定义及说明。2. 实验前要作好充分准备,包括:理解实验要求,掌握辅助工具的使用,了解该抽象数据类型的定义及意义,以及其基本操作的算法并设计合理的存储结构。

pandas获得指定行_pandas实现选取特定索引的行-程序员宅基地

文章浏览阅读4k次。下面为大家分享一篇pandas实现选取特定索引的行,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧如下所示:>>> import numpy as np>>> import pandas as pd>>> index=np.array([2,4,6,8,10])>>> data=np.array([3,5,7,9,11..._pandas 读取索引为某个值的行

修改C:\Users 下面文件夹的名称_如何修改电脑users文件下的文件名?-程序员宅基地

文章浏览阅读4.8k次。Windows默认时禁用管理员账户的,要先允许使用管理员Win+X快捷键打开计算机管理,选择本地用户和组,如下图,右键管理员,选择属性,将下图红色框标识的复选框勾选掉,允许使用管理员,然后确定。如果要更改一般用户账户的文件夹名称,登录管理员账户更改C:\Users 下面一般用户文件夹的名称,然后Win+R快捷键,输入regedit,回车,打开注册表。找到 计算机\HKEY_LOCAL_MAC..._如何修改电脑users文件下的文件名?

tcpip基础-程序员宅基地

文章浏览阅读83次。osi七层模型,tcp,udp_tcpip基础

14寸笔记本电脑_2020年笔记本电脑怎么选,从1000到20000,总有一款适合你-程序员宅基地

文章浏览阅读856次。为了适应快节奏的现代办公环境,笔记本电脑轻薄便携方便移动,自带电池随时随地办公的特性已经成了职场人士不可或缺的工具,更多的家庭用户和学生群体选购电脑优先考虑笔记本电脑。很多朋友在挑选笔记本电脑之初,对笔记本电脑的各硬件配置,笔记本电脑厂商品牌特点,笔记本电脑的各项功能并不了解,只能被动接受销售人员的推荐,从而购买了商家利润高却不符合用户实际需求的笔记本电脑。今天我就来给大家推荐十四款畅销的笔记本电..._两三千左右14寸的笔记本电脑推荐

VCC,VDD,VEE,VSS很头痛吧?这里秒懂!_vdd会受到vcc的影响吗-程序员宅基地

文章浏览阅读4.9k次,点赞2次,收藏8次。VCC,VDD,VEE,VSS很头痛吧?这里秒懂!10-28 17:21查看832回复4上尉shonway大酋长更多PCB专业知识,云盘分享☞☞☞ 【此链接会打开手机QQ】  一、解释  DCpower一般是指带实际电压的源,其他的都是标号(在有些仿真软件中默认的把标号和源相连的)VDD:电源电压(_vdd会受到vcc的影响吗

随便推点

java 双冒号 静态方法,用双冒号(::)调用非静态方法-程序员宅基地

文章浏览阅读286次。对于静态方法和非静态方法,PHP非常松散。 有一件事我没有看到这里注意到,如果你调用一个非静态的方法,静态地从类C的非静态方法内ns $this里面ns将引用你的C的实例。class A { public function test() { echo $this->name; } } class C { public function q() { $this->name = 'hell..._java使用双冒号调用方法时报错

LocalDate或者LocalDateTime判断是否在本月之内_localdate判断月份-程序员宅基地

文章浏览阅读9.8k次。//判断时间是否在本月之内public static boolean isInThisMonth(LocalDateTime time) { LocalDate localDate = time.toLocalDate(); LocalDate now = LocalDate.now(); return localDate.isAfter(now.minusMonths..._localdate判断月份

记录 - k8s 入门搭建 (1.16.0, helloweb)_kc logs 查询-程序员宅基地

文章浏览阅读676次。环境VirtualBox虚机 (CentOS 7.4 amd64):k8s0/master节点: 192.168.199.200k8s1/worker节点: 192.168.199.201注:主要参考了 https://kuboard.cn/install/history-k8s/install-k8s-1.16.0.html “使用kubeadm安装kubernetes_v1.16...._kc logs 查询

一位醉酒后的资深程序员:说了这些我可能会后悔_红迪醉酒程序员-程序员宅基地

文章浏览阅读307次。原文发表于2021 年 5 月 28 日,是 Reddit (美国的社交新闻站点,口号:提前于新闻发声,来自互联网的声音。)上的一个热帖。下面是我翻译的原文摘要:我喝醉了,我可能会为此后悔,但下面这些是我过去 10 年作为工程师学到的。职业生涯最好的提升方法是换公司。 技术栈其实并不重要,所有的领域都有大约 10-20 个核心原则,技术栈只是试图让这些事情变得更容易,所以不要为此烦恼。 在我工作过的公司里,我结交了一些很好的、一辈子的朋友。但我不会把它作为我工作的每个地方的必要._红迪醉酒程序员

minio服务器在win10的上传与下载,以及修改头像Minio速看免费本地文件服务器_minio/minio server /data --console-address ":9001"-程序员宅基地

文章浏览阅读1.2k次。Minio服务器,实现文件CRUD,上传下载,修改头像_minio/minio server /data --console-address ":9001" -address ":9002

怎么调整图片大小?这三种方法一定能帮到你_csdn博客图片调整大小-程序员宅基地

文章浏览阅读3.4k次。在我们平时使用图片的时候,一定都碰到图片的体积超过系统的限制的情况,尤其是在将图片上传到某些系统上的时候,这种情况尤为多见,既限制了图片的尺寸,又限制了图片的体积必须小于指定kb,这时候就需要通过工具来调整图片大小(https://www.yasuotu.com/size),使图片符合要求,下面给大家分享三种调整图片大小的方法,相信一定对大家有帮助。一、图片裁剪采用图片裁剪的方法之前,首先要看图片是否适合裁剪,要在保证图片主体画面不缺失的情况下进行图片裁剪可以降低图片的体积,以下是具体裁剪方法:1.打_csdn博客图片调整大小

推荐文章

热门文章

相关标签