【发布时间】:2023-03-03 15:06:02
【问题描述】:
我想根据列表中项目的属性(邮件)从列表中删除重复项。
我这样做了:
acteurs = acteurs.stream().distinct().collect(Collectors.toList());
Acteur的equals方法
@Override
public boolean equals(Object o) {
if (this.getMail().equals(((Acteur)o).getMail())) {
return true;
}
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Acteur acteur = (Acteur) o;
if(acteur.id == null || id == null) {
return false;
}
return Objects.equals(id, acteur.id);
}
在指令期间应该调用equals方法
acteurs = acteurs.stream().distinct().collect(Collectors.toList());
但事实并非如此。
我哪里错了?
更新:
我的解决方案:
List<Acteur> dto3s =acteurs.stream()
.collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Acteur:: getMail))),
ArrayList::new));
【问题讨论】:
-
equals方法无法编译。向我们展示真实的。 -
那么删除重复的acteur(具有相同'mail'值)的最佳方法应该是什么?
-
另外,您的
equals方法可以轻松抛出ClassCastException。 -
@thomas 你是否覆盖了
hashCode()?
标签: java list java-stream