众所周知
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