我有一个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>();
我想根据以下条件从此combinedList中删除重复的对象; 如果fName相同或者如果uName相同。
答案 0 :(得分:4)
如果这是确定2名学生是否平等的一般标准,您可以覆盖课程中的equals
和hashcode
,以便根据您的标准让2名学生相等。
然后,您可以将学生添加到一组(通常为HashSet,这将自动删除副本。
答案 1 :(得分:1)
将它们存储在Set
(例如TreeSet
)中,并在施工时Comparator
符合Set
的{{1}}或fName
的标准。 uName
是一样的。
(我假设复制的定义是学生的外部,例如,它在不同的时间意味着不同的东西。如果它是学生固有的,那么@assylias的回答更有意义)。
答案 2 :(得分:1)
如果您需要唯一列表,我建议您使用List
界面中的任何内容。你最好使用Set
覆盖,hashCode()
类的equals()
和Students
方法
答案 3 :(得分:1)
建议在您的学生班级中实施equals()
和hashCode()
,并使用HashSet来强制执行唯一性。
答案 4 :(得分:0)
public List<User> removeDuplicateFromList(List<User> list){
int s=0;
List<User> users=new ArrayList<User>();
for(User us1 :list){
for(User us2:users){
if(us1.getIdUser()==us2.getIdUser()){
s=1;
}else{
s=0;
}
} if(s==0){
users.add(us1);
}
}
return users;
}