java从ArrayList中删除重复对象
我有一个Java类
class Students{
private String fName;
private String lName;
private String uName;
public Students(String fName, String lName, String uName) {
this.fName = fName;
this.lName = lName;
this.uName = uName;
}
public String getuName() {
return uName;
}
public void setuName(String uName) {
this.uName = uName;
}
public String getfName() {
return fName;
}
public void setfName(String fName) {
this.fName = fName;
}
public String getlName() {
return lName;
}
public void setlName(String lName) {
this.lName = lName;
}
}
现在我创建了对象作为
Students students1 = new Students("har","mat","harmat");
Students students2 = new Students("pan","son","panson");
Students students3 = new Students("yogi","jos","yogijos");
Students students4 = new Students("har","mat","harmat");
Students students5 = new Students("pan","son","harmat");
Students students6 = new Students("yogi","jos","someotherUName");
Students students7 = new Students("yogi","jos","someotherUName2");
现在,所有这些对象都被添加到combinedList中
List combinedList = new ArrayList<SchoolStudents>();
我想根据以下条件从这个组合列表中删除重复的对象; 如果fName相同或uName相同
# 1 楼答案
# 2 楼答案
如果这是确定两个学生是否相等的一般标准,那么您可以覆盖班级中的
equals
和hashcode
,根据您的标准使两个学生相等然后,您可以将学生添加到一个集合(通常是HashSet),该集合将自动删除重复项
# 3 楼答案
建议在学生类中实现
equals()
和hashCode()
,并使用HashSet强制唯一性# 4 楼答案
如果您需要一个唯一的列表,我建议您使用}
List
接口中的任何内容。您最好使用^{重写
Students
类的hashCode()
和equals()
方法# 5 楼答案
将它们存储在
Set
(如TreeSet
)中,并在施工时向Set
提供满足fName
或uName
相同标准的Comparator
(我假设复制的定义对学生来说是外部的,例如,它在不同的时间意味着不同的事情。如果它是学生固有的,那么@assylias答案更有意义)