Java List對象分組


實體類

  必須重寫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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM