实体类

  必须重写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. vue3的reactive对象赋值后失去响应式的问题

    vue3种对象类型的响应式用reactive实现. 但是reactive对象在赋值后,因为变量代理函数变了,就失去了响应式功能了.示例如下: <template> <div> ...

  2. 等保测评--postgresql修改默认超级用户,建立普通用户使用

    1.postgresql权限说明 SELECT INSERT UPDATE DELETE TRUNCATE REFERENCES TRIGGER CREATE CONNECT TEMPORARY EX ...

  3. vue-router单页面应用的多标签页使用问题

    正常的思维 做多vue页面应用,我们的第一反应是配置多个入口点,多个vue应用,编译成多个HTML文件,由服务器来决定路由.这是正常的思维. 但谁知道单页面应用也能做到类似的效果呢.单页面不过是服务器 ...

  4. vue多页面应用

    多页面应用本身和单页面应用没什么差别,无非是多了几个入口点. 入口点多的话,还可以写个函数扫描路径取添加入口点. 比较让人好奇的是路径的问题.我们要开发的时候要体现目录层级接口,所以入口文件是一层套一 ...

  5. linux 文件的特殊权限:suid sgid sticky

    目录 一.关于文件的特殊权限 二.suid 三.SGID 四.Stickybit 一.关于文件的特殊权限 1.文件与目录设置不止基础权限:r,w,x,还有所谓的特殊权限.特殊权限会拥有一些" ...

  6. 一文教你基于LangChain和ChatGLM3搭建本地知识库问答

    本文分享自华为云社区<[云驻共创]LangChain+ChatGLM3实现本地知识库,转华为云ModelArts,实现大模型AI应用开发> ,作者:叶一一. 一.前言 本期华为云的讲师是华 ...

  7. [Unity] 实现AssetBundle资源加载管理器

    实现Unity AssetBundle资源加载管理器 AssetBundle是实现资源热更新的重要功能,但Unity为其提供的API却十分基(jian)础(lou).像是自动加载依赖包.重复加载缓存. ...

  8. 珠排序算法C# 简单实现 奇葩排序中的算盘排序(算珠排序)算法

    Console.WriteLine("Hello World!"); int[] arr = { 1, 3, 4, 0, 22, 4,0, 6, 3,10,8,6,7 }; Con ...

  9. 为什么下载程序的时候会提示win-amd64.exe

  10. 深入探讨Function Calling:实现外部函数调用的工作原理

    引言 Function Calling 是一个允许大型语言模型(如 GPT)在生成文本的过程中调用外部函数或服务的功能. Function Calling允许我们以 JSON 格式向 LLM 模型描述 ...