關於去重

衆所周知

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章