jdk1.8如何到List集合中重复对象
项⽬在开发⼤批量导⼊功能的时候,除了要要将导⼊的每⼀⾏和数据库⽐对,校验数据是否已经存在,还要判断⾃⾝导⼊的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 {
jdk怎么使用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().upingBy(Function.identity()));
for(Map.Entry<TestPlanAddImportVo, List<TestPlanAddImportVo>> entry : Set()){
Value().size()>1){
System,out.Value().get(0).getXu()"+"和序"+"Value().get(1).getXu()+"数据重复");
}
}
注意:upingBy(Function.identity())会根据⾃⾝对象做唯⼀key分组,分组后的Value是List集合,正常value的长度应该是1,如果⼤于1,说明就肯定存在重复项
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论