1. 程式人生 > 實用技巧 >Java List物件分組

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);