gpt4 book ai didi

Java 8 收集根据某些字段设置

转载 作者:行者123 更新时间:2023-12-04 03:14:56 24 4
gpt4 key购买 nike

我如何在 java 8 中收集到某个字段的集合?例如:我有 2 个具有不同哈希值的对象(这就是为什么它们是集合中的两个实体)但我想要一个只有一个实例的集合

试过这个:但它给了我两个学生,而我只有 1 个唯一学生。

Set<Man> students =
people.stream().collect( Collectors.mapping( Man::isStudent, Collectors.toSet()));

name:"abc" , id:5 (hash 1XX)
name:"abc", id:5 (has 5XX)

我希望集合只包含一个实例

谢谢

最佳答案

您必须覆盖 hashCodeequals。可能的实现是:

@Override
public int hashCode() {
return this.name.hashCode * 31 + id;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Student)) return false;

Student s = (Student) o;

if (!getName().equals(s.getName())) return false;
if (getId() != appError.getStatus()) return false;

return true;
}

关于Java 8 收集根据某些字段设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41953954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com