实体类

  必须重写equals和hashCode方法

package com.zcsoft.rc.backend.biz.vo.securityLibary;

import java.util.Date;
import java.util.Objects; /**
* @ClassName:SecurityLibraryImportDistinctVO
* @Description:安全风险库导入数据分组,根据导入数据分主表数据
* @Author:chenyb
* @Date:2020/8/13 11:30 上午
* @Versiion:1.0
*/
public class SecurityLibraryImportDistinctVO {
/**
* 内码
*/
private String id;
/**
* 风险类别
*/
private String riskType;
/**
* 风险名称
*/
private String riskName;
/**
* 风险点
*/
private String riskPoint;
/**
* 风险点里程
*/
private String riskPointMileage;
/**
* 安全风险点描述
*/
private String riskDesc;
/**
* 可能造成的后果
*/
private String causeResult;
/**
* 风险等级
*/
private String riskLevel;
/**
* 风险期限
*/
private Date riskPeriod;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改时间
*/
private Date modifyTime;
public String getRiskType() {
return riskType;
} public void setRiskType(String riskType) {
this.riskType = riskType;
} public String getRiskName() {
return riskName;
} public void setRiskName(String riskName) {
this.riskName = riskName;
} public String getRiskPoint() {
return riskPoint;
} public void setRiskPoint(String riskPoint) {
this.riskPoint = riskPoint;
} public String getRiskPointMileage() {
return riskPointMileage;
} public void setRiskPointMileage(String riskPointMileage) {
this.riskPointMileage = riskPointMileage;
} public String getRiskDesc() {
return riskDesc;
} public void setRiskDesc(String riskDesc) {
this.riskDesc = riskDesc;
} public String getCauseResult() {
return causeResult;
} public void setCauseResult(String causeResult) {
this.causeResult = causeResult;
} public String getRiskLevel() {
return riskLevel;
} public void setRiskLevel(String riskLevel) {
this.riskLevel = riskLevel;
} public Date getRiskPeriod() {
return riskPeriod;
} public void setRiskPeriod(Date riskPeriod) {
this.riskPeriod = riskPeriod;
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public Date getCreateTime() {
return createTime;
} public void setCreateTime(Date createTime) {
this.createTime = createTime;
} public Date getModifyTime() {
return modifyTime;
} public void setModifyTime(Date modifyTime) {
this.modifyTime = modifyTime;
} @Override
public String toString() {
return "SecurityLibraryImportDistinctVO{" +
"id='" + id + '\'' +
", riskType='" + riskType + '\'' +
", riskName='" + riskName + '\'' +
", riskPoint='" + riskPoint + '\'' +
", riskPointMileage='" + riskPointMileage + '\'' +
", riskDesc='" + riskDesc + '\'' +
", causeResult='" + causeResult + '\'' +
", riskLevel='" + riskLevel + '\'' +
", riskPeriod=" + riskPeriod +
", createTime=" + createTime +
", modifyTime=" + modifyTime +
'}';
} @Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof SecurityLibraryImportDistinctVO)) return false;
SecurityLibraryImportDistinctVO that = (SecurityLibraryImportDistinctVO) o;
return Objects.equals(riskType, that.riskType) &&
Objects.equals(riskName, that.riskName) &&
Objects.equals(riskPoint, that.riskPoint) &&
Objects.equals(riskPointMileage, that.riskPointMileage) &&
Objects.equals(riskDesc, that.riskDesc) &&
Objects.equals(causeResult, that.causeResult) &&
Objects.equals(riskLevel, that.riskLevel) &&
Objects.equals(riskPeriod, that.riskPeriod);
} @Override
public int hashCode() {
return Objects.hash(riskType, riskName, riskPoint, riskPointMileage, riskDesc, causeResult, riskLevel, riskPeriod);
}
}

工具类

package com.zcsoft.rc.backend.biz.util;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set; /**
* @ClassName:ListUtils
* @Description:List工具类
* @Author:chenyb
* @Date:2020/8/13 11:26 上午
* @Versiion:1.0
*/
public class ListUtils <T>{
/**
* 通过set去重, 不打乱原有list的顺序
* list中相同的对象会被去重复
*
* @param List<T> list
* @return List<T>
* */
public List<T> distinctBySetOrder(List<T> list){
Set<T> set = new HashSet<T>();
List<T> newList = new ArrayList<T>();
for (T t :list) {
if(set.add(t)){
newList.add(t);
}
}
return newList;
}
/**
* 通过set去重, 顺序可能会乱
* list中相同的对象会被去重复
*
* @param List<T> list
* @return List<T>
* */
public List<T> distinctBySet(List<T> list){
return new ArrayList<T>(new HashSet<T>(list));
}
}

使用

List<SecurityLibraryImportDistinctVO> list=new ArrayList<>();
//使用工具类
ListUtils<SecurityLibraryImportDistinctVO> listUtils=new ListUtils<SecurityLibraryImportDistinctVO>();
//分组后的List对象
List<SecurityLibraryImportDistinctVO> distinctList = listUtils.distinctBySet(list);

Java List对象分组的更多相关文章

  1. JAVA 集合 List 分组的两种方法

    CSDN日报20170219--<程序员的沟通之痛> [技术直播]揭开人工智能神秘的面纱 程序员1月书讯 云端应用征文大赛,秀绝招,赢无人机! JAVA 集合 List 分组的两种方法 2 ...

  2. 规则引擎集成接口(九)Java类对象

    Java类对象 右键点击“对象库” —“添加java类对象”,如下图: 弹出窗体,在文本框中输入类的全名“com.flagleader.test.Test”,选择该类型后确定,如下: 显示如下,勾选上 ...

  3. java类 对象 和构造方法

    github地址:https://github.com/lily1010/java_learn/tree/master/dog java中对象和类 java中万物皆对象,比如说动物,里面有猫,狗,鱼等 ...

  4. java integer对象判断两个数字是否相等

    java integer对象判断两个数字是否相等,不一定对 问题发生的背景:javaweb的项目,起先,因为在java中实体类中的int类型在对象初始化之后会给int类型的数据默认赋值为0,这样在很多 ...

  5. 转载---Java集合对象的深度复制与普通复制

    原博文:http://blog.csdn.net/qq_29329775/article/details/49516247 最近在做算法作业时出现了错误,原因是没有弄清楚java集合的深度复制和浅度复 ...

  6. spring mvc返回json字符串数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable

    1.spring mvc返回json数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable 2. @RequestMapping(val ...

  7. [原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点,在hibernate 中 java类型 与sql类型之间的对应关系,Java 时间和日期类型的映射,Java 大对象类型 的 映射 (了解),映射组成关系

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  8. Gson把json串转换成java实体对象

    Gson把json串转换成java实体对象的方法如下: 1.首先导入Gson的jar包,网上可以下载. java实体对象如下: public class Model { private double ...

  9. net.sf.json在处理json对象转换为普通java实体对象时的问题和解决方案

    我使用的net.sf.json是json-lib-2.4-jdk15.jar,把json对象转换为普通java实体对象时候有个问题,josn对象转换为java对象之后,json串里面的那几个小数点的值 ...

  10. Java中对象的深复制和浅复制详解

    1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. ⑵ ...

随机推荐

  1. 详解GROUP BY 如何与 SELECT 语句进行交互?

    SELECT 列表: 矢量聚合.如果 SELECT 列表中包含聚合函数,则 GROUP BY 将计算每组的汇总值.这些函数称为矢量聚合. Distinct 聚合.ROLLUP.CUBE 和 GROUP ...

  2. Java面试题:Spring Bean线程安全?别担心,只要你不写并发代码就好了!

    Spring中的Bean是否线程安全取决于Bean的作用域(scope).Spring提供了几种不同的Scope,其中包括Singleton.Prototype.Request.Session.Glo ...

  3. ❤️‍🔥 Solon Cloud Event 新的事务特性与应用

    1.Solon Cloud Event? 是 Solon 分布式事件总线的解决方案.也是 Solon "最终一致性"分布式事务的解决方案之一 2.事务特性 事务?就是要求 Even ...

  4. 【数字基座·智慧物联】AIRIOT新品发布会在京举办

    2023年6月6日,由航天科技控股集团股份有限公司主办的"数字基座·智慧物联"AIRIOT新品发布会在北京成功举办,重磅发布了AIRIOT 4.0物联网平台的五大核心能力引擎,并邀 ...

  5. WPF新建viewModel实例化成员的注意事项

    不要用表达式体去初始化一个用做数据源(比如ItemSource)的引用类型成员.比如这种 public List<MainWindowItem> Items => new List& ...

  6. Clear Code for Minimal API

    我在写MinimalAPI的时候,发现不能最清晰的看到每个API,原因就是:WebAPI中不断增长逻辑处理过程 于是我在想如何简化API至一行,在一点一点想办法中,发现了简化DotNET Minima ...

  7. vue3:modal组件开发

    项目环境 @vue/cli 4.5.8 最终效果 需求分析 显示/隐藏 点击遮罩层能否关闭 宽度和zIndex自定义 标题栏 -显示标题和关闭按钮 主体 底部 -内置取消和确定功能 前置知识 tele ...

  8. linux用户管理:创建用户,删除用户,管理用户,用户配置

    目录 一.关于用户 二.用户的三种类型 三.与用户有关的配置文件详解 四.创建用户 五.设置用户密码 六.删除用户 七.用户密码时效管理 八.查看用户相关信息的命令 九.修改用户基本信息 十.管理用户 ...

  9. 鸿蒙极速入门(三)-TypeScript语言简介

    ArkTS是HarmonyOS优选的主力应用开发语言.ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集.因此,在学习ArkTS语言之 ...

  10. 7.30考试总结(NOIP模拟28)[遗忘之祭仪·客星璀璨之夜·割海成路之日]

    一个人有表里两面,你能看到的,仅仅是其中一面而已. 前言 看着这套题非常不可做,但是经历的所有的模拟赛中,这次还是第一次切题(惭愧) 本来 T1 我 1h 就码完了,交了一遍 TLE90 然后后来两个 ...