关于去重

众所周知

1、只要重写equals,就必须重写hashCode
2、因为Set存储的是不重复的对象,依据hashCode和equals进行判断,所以Set存储的对象必须重写这两个方法
3、如果自定义对象作为Map的键,那么必须重写hashCode和equals

以项目为例
项目名称不能传入相同的

@Getter
@Setter
@EqualsAndHashCode(of = {
    
    "projectName"})
public class InfoProject {
    
    

    private Integer id;

    private String projectName;

}
List<InfoProject> projectList = dto.getProjectList();
HashSet<InfoProject> set = Sets.newHashSet(projectList);
if(projectList.size() != set.size()) {
    
    
       return PlatformResult.failure("项目名称重复");
}

之所以可以用hashset的方法进行排重,是因为在InfoProject里面使用了注释@EqualsAndHashCode(of = {"projectName"})
这个注释就等于在InfoProject重写了equals和hashcode方法,所以后面可以用hashset排重
而且所谓hashSet其实就相当于hashMap的key

猜你喜欢

转载自blog.csdn.net/NewBeeMu/article/details/106531230