gpt4 book ai didi

java - 按对象字段比较两个列表

转载 作者:行者123 更新时间:2023-11-30 10:38:30 26 4
gpt4 key购买 nike

我有两个学生对象列表。一个学生对象如下:

Student
int id
int class id
String name
int age

在一个列表中,我有填充了 classId、姓名和年龄字段的学生对象。然后,我将它们插入到一个数据库中,该数据库返回这些相同对象的集合,这些对象的 id 填充了 db 模式分配的整数。我希望尽可能将这两个列表等同起来,以确保数据库操作成功。我可以想到两种方法来做到这一点。要么使用除 id 之外的所有字段将输入列表和输出列表中的所有学生对象等同起来。或者,使用输出列表的值手动注入(inject)输入列表中每个学生的 ID。这两种方法的实现都非常不干净,所以我希望有一种干净的方法来做到这一点?例如,在第一个选项中,我可以对输入和输出集合进行排序,然后迭代第一个集合并与每个字段的输出集合中的索引进行比较。

最佳答案

您可以让您的 Student 覆盖 .equals(Object o) 方法。

public class Student {

private int id;
private int classId;
private String name;
private int age;

@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 (age != other.age)
return false;
if (classId != other.classId)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}


}

然后你可以像这样比较两个学生:

Student s1 = ...;
Student s2 = ...;

if(s1.equals(s2)) {
//Do this when they are equal
}

这是一种检查相等性的简洁方法,所有 Java 函数都将调用这个重写的 equals 方法。您也可以将它与列表一起使用。

List<Student> studentList = ...;
Student s1 = ...;

if(studentList.contains(s1)) {
//Do this when s1 is in the list
}

如果您有任何问题或者我误解了您的问题,请告诉我。

关于java - 按对象字段比较两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39652272/

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