实体类

  必须重写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. 基于Node.js+MySQL开发的开源微信小程序商城(微信小程序)部署环境

    在网上搜到小程序设计的项目,下载前辈的代码到本地环境,接下来需要如何部署代码到本地,并能够看到完整的效果展示. 服务器端: https://github.com/tumobi/nideshop Nid ...

  2. python教程6.6-发送邮件smtplib

    实现步骤: Python对SMTP⽀持有 smtplib 和 email 两个模块, email 负责构造邮件, smtplib 负责发送邮件,它对smtp协议进⾏了简单的封装. 简单代码示例: 发送 ...

  3. postgresql的insert语句中进行判断,数据已有则更新,数据没有则插入

    INSERT 操作 INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...); 下面是一个示例: INSE ...

  4. Selenium4自动化测试8--控件获取数据--上传、下载、https和切换分页

    10-上传 上传不能模拟用户在页面上选择本地文件,只能先把要上传的文件先准备好在代码里上传 import time from selenium.webdriver.support.select imp ...

  5. kubernetes 二次开发-认证,鉴权(1)

    基于webhook的认证 授权过程 认证授权服务需要满足如下kubernetes的规范 kubernetes api-server组件发送 http post 请求 url:https://authn ...

  6. 为什么SwiftUI使用struct, 限制使用class

    前言 在学习SwiftUI所有的地方,视图元素都定义一个struct并实现View协议,该协议定义body变量返回View类型. 但是为什么,这里一直是指定的struct, 而不是class呢? 尝试 ...

  7. Aspire项目发布到远程k8s集群

    前提 你必须会创建aspire项目,不会的请先看微服务新体验之Aspire初体验 Aspirate (Aspir8) Aspirate 是将aspire项目发布到k8s集群的工具 安装aspirate ...

  8. 搭建单机版伪分布式Hadoop+Scala+spark

    搭建单机版伪分布式Hadoop+Scala+spark 修改ip [root@master ~]# nmcli connection add ifname ens32 con-name ens32 a ...

  9. JavaSE 关键字和标识符

    目录 关键字 标识符 标识符命名规则 标识符命名规范 字面值 关键字 具有特殊含义的 命名时不可以与关键字重名 标识符 也就是名字,对类名,变量名称,方法名称,参数名称等修饰 标识符命名规则 以字母, ...

  10. codemirror-editor-vue3 编辑器只要换行保存就会有小红点

    先看示例 找了篇博客写的贼详细 https://blog.csdn.net/xujingyiss/article/details/118992763 只要设置这二个        let conten ...