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