实体类

  必须重写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. cesium教程5-用primitive加载glb和gltf格式的小模型

    primitive加载方法更底层,用起来更麻烦,但是效率更高. 完整示例代码: <!DOCTYPE html> <html lang="en"> <h ...

  2. 一种利用光电容积描记(PPG)信号和深度学习模型对高血压分类的新方法

    具体的软硬件实现点击 http://mcu-ai.com/ MCU-AI技术网页_MCU-AI 据世界心脏联合会统计,截至 2022 年,全球有 13 亿人被诊断患有高血压,每年约有 1000 万人死 ...

  3. AIRIOT答疑第7期|如何快速提升物联网项目交付速度?

    平台+模板,套上就能用!贼拉快! AIRIOT提供物联网低代码平台+多套行业案例模板,针对于有明确项目的服务商,用平台已经配置好的节点数.功能模块.流程,直接上手干项目! AIRIOT解答: 多套物联 ...

  4. Git:国内用命令行访问GitHub的方法

    1 直接改Hosts文件(现在不太管用了) 如果你是Linux或Mac系统,那么可以通过命令sudo vim /etc/hosts打开Hosts文件,并加入以下内容: 140.82.114.25 al ...

  5. Pytorch:使用Tensorboard记录训练状态

    我们知道TensorBoard是Tensorflow中的一个强大的可视化工具,它可以让我们非常方便地记录训练loss波动情况.如果我们是其它深度学习框架用户(如Pytorch),而想使用TensorB ...

  6. go新手常踩的坑

    作为一个5年的phper,这两年公司和个人都在顺应技术趋势,新项目慢慢从php转向了go语言,从2021年到现在,笔者手上也先后开发了两个go项目.在学习go语言的过程中也学习并总结了一些相关的东西, ...

  7. ICESat-2 ATL03光子数据读取

    ICESat-2数据处理的方式一般为将光子数据投影到沿轨距离和高程的二维空间.如下图: ATL03数据读取 H5是一种数据存储结构,读取原理就是按照该结构获取数据,这里给出两种读取方式. ATL03的 ...

  8. IceRPC之多路复用传输>快乐的RPC

    作者引言 很高兴啊,我们来到了IceRPC之多路复用传输>快乐的RPC,基础引导,打好基础,才能让自已不在迷茫,快乐的畅游世界. icerpc 和多路复用传输 了解 icerpc 协议和多路复用 ...

  9. 提速15%,PaddleOCRSharp新版v4.3发布

    PaddleOCRSharp v4.3版本,已经于5月23日发布.该版本的发布,在不影响识别精度的同时,带来了10%~15%速度的提升. 项目地址:https://gitee.com/raoyutia ...

  10. 抖音越狱版本App下载

    一.准备下载越狱版本抖音App 一般下载越狱版本App要不从越狱手机上Crack 正版App,另外一种从PP助手或者越狱市场进行下载,这里选择第二种方式 感谢 http://iosre.com/t/p ...