0

我有一个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");

现在所有这些对象都被添加到 combineList

List combinedList = new ArrayList<SchoolStudents>();

我想根据以下条件从此组合列表中删除重复的对象;如果 fName 相同或 uName 相同。

4

5 回答 5

4

如果这是确定 2 名学生是否平等的一般标准,您可以覆盖equalshashcode在您的班级中根据您的标准使 2 名学生平等。

然后,您可以将学生添加到集合(通常是HashSet,它将自动删除重复项。

于 2012-07-25T14:13:50.853 回答
1

如果您需要一个唯一列表,我建议您使用List界面中的任何内容。你会更好地使用Set

类的覆盖hashCode()equals()方法Students

于 2012-07-25T14:15:14.830 回答
1

建议在您的 Student 类中实现equals()hashCode()使用HashSet来强制唯一性。

于 2012-07-25T14:16:11.947 回答
1

将它们存储在 a Set(例如 a TreeSet)中,并在构造时提供Comparator满足Set您的标准fNameuName相同的 a 。

(我假设重复的定义对学生来说是外部的,例如它在不同的时间意味着不同的东西。如果它是学生固有的,那么@assylias 的答案更有意义)。

于 2012-07-25T14:14:35.457 回答
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;
}
于 2014-06-20T15:01:23.260 回答