1.重写对象中某个属性的hashCode和equals方法 2.解决了大量for循环嵌套的问题 private List<ActivityConfigDo> getListCompare(List<ActivityConfigDo> configDoList, List<ActivityConfigDo> measureToActivityList) { // List<ActivityConfigDo> diff = new ArrayList<>(); // for (ActivityConfigDo activityConfigDo : configDoList) { // if (!measureToActivityList.contains(activityConfigDo)) { // diff.add(activityConfigDo); // } // } // return diff; List<ActivityConfigDo> activityConfigDos = Lists.newArrayList(); List<ActivityConfigDo> maxList = configDoList; List<ActivityConfigDo> minList = measureToActivityList; if (measureToActivityList.size() > configDoList.size()) { maxList = measureToActivityList; minList = configDoList; } ConcurrentHashMap<ActivityConfigDo, Integer> map = new ConcurrentHashMap<>(maxList.size()); //targetActivity for (ActivityConfigDo activityConfigDo : maxList) { map.put(activityConfigDo, 1); } //sourceActivity for (ActivityConfigDo activityConfigDo : minList) { // 相同的 if (map.get(activityConfigDo) != null) { map.put(activityConfigDo, 2); continue; } // 不相等的 activityConfigDos.add(activityConfigDo); } for (Map.Entry<ActivityConfigDo, Integer> entry : map.entrySet()) { if (entry.getValue() == 1) { activityConfigDos.add(entry.getKey()); } } return activityConfigDos; }
package com.mcloud.nis.knowledge.domain; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; import java.util.Objects; /** * Created by 周建鹏 * on 2019/9/27 * 16:39 * 活动配置 */ @Api(value ="活动配置") public class ActivityConfigDo extends BaseDo { /**活动名称**/ @ApiModelProperty(value = "活动名称") private String activityName; /**编码类型*/ @ApiModelProperty(value = "编码类型") private String basicType; @ApiModelProperty(value = "活动类型") private String activeType; /**活动内容*/ @ApiModelProperty(value = "活动内容") private String activityAction; /**措施ID*/ @ApiModelProperty(value = "措施Id") private Integer measureId; @ApiModelProperty(value = "活动状态") private Integer activityStatus; public ActivityConfigDo() { } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; ActivityConfigDo that = (ActivityConfigDo) o; return activityName.equals(that.activityName); } @Override public int hashCode() { return Objects.hash(activityName); } public String getActivityName() { return activityName; } public void setActivityName(String activityName) { this.activityName = activityName; } public String getActivityAction() { return activityAction; } public void setActivityAction(String activityAction) { this.activityAction = activityAction; } public Integer getMeasureId() { return measureId; } public void setMeasureId(Integer measureId) { this.measureId = measureId; } public Integer getActivityStatus() { return activityStatus; } public void setActivityStatus(Integer activityStatus) { this.activityStatus = activityStatus; } public String getBasicType() { return basicType; } public void setBasicType(String basicType) { this.basicType = basicType; } public String getActiveType() { return activeType; } public void setActiveType(String activeType) { this.activeType = activeType; } }