有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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相同


共 (5) 个答案

  1. # 1 楼答案

    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;
    }
    
  2. # 2 楼答案

    如果这是确定两个学生是否相等的一般标准,那么您可以覆盖班级中的equalshashcode,根据您的标准使两个学生相等

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

  3. # 3 楼答案

    建议在学生类中实现equals()hashCode(),并使用HashSet强制唯一性

  4. # 4 楼答案

    如果您需要一个唯一的列表,我建议您使用List接口中的任何内容。您最好使用^{}

    重写Students类的hashCode()equals()方法

  5. # 5 楼答案

    将它们存储在Set(如TreeSet)中,并在施工时向Set提供满足fNameuName相同标准的Comparator

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