gpt4 book ai didi

java - 如何比较对象数组的值?

转载 作者:行者123 更新时间:2023-11-30 11:15:35 31 4
gpt4 key购买 nike

有一个 POJO 类的 20 个对象的集合。我想编写一个返回具有不同值的对象的方法。现在这是我的 Pogo 类

class Student {

private String firstName;

private String lastName;

public String getFirstName() {
return firstName;
}

public void setFirstName( String firstName ) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName( String lastName ) {
this.lastName = lastName;
}
}

现在我想要一些返回唯一姓氏值的方法。我不明白我必须在其中加入哪种逻辑。

最佳答案

如果您使用的是 Eclipse 之类的软件,您可以右键单击源并选择“源”>“生成 hashCode() 和 equals()...”。这样做会产生这样的结果:

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((firstName == null) ? 0 : firstName.hashCode());
result = prime * result + ((lastName == null) ? 0 : lastName.hashCode());
return result;
}

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (firstName == null) {
if (other.firstName != null)
return false;
} else if (!firstName.equals(other.firstName))
return false;
if (lastName == null) {
if (other.lastName != null)
return false;
} else if (!lastName.equals(other.lastName))
return false;
return true;
}

然后,您需要将对象添加到 Set 的实例中,也许是 HashSet。听起来您可以只返回填充的 Set。

另见 this .

编辑:请注意,我并不是建议将所有这些都放在 Student 类中。上面显示的代码用于 Student,但返回不同学生集合的方法位于其他地方。

编辑 2:如果您只对独特的姓氏感兴趣,您可以修改 hashCode() 和 equals() 以不考虑名字,但我承认这很不直观,建议在任何其他情况下避免这样做而不是学术练习。因此,更正确的做法可能是在仅考虑姓氏的 Comparator 实例上分层——参见 docthis .

关于java - 如何比较对象数组的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25328454/

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