This question already has answers here:
Removing Duplicate Values from ArrayList
                                
                                    (17个答案)
                                
                        
                5年前关闭。
            
        

我们如何从StudentList对象删除重复的条目。在这里我们可以根据录入顺序确定学生是否重复。

class Student
{
  String name;
  long phone;
  String address;
  boolean isActive;
  Student(String name, long phone, String address, boolean isActive)
  {
    this.name = name;
    this.phone = phone;
    this.address = address;
    this.isActive = isActive;
  }
}


这是执行类。

class CollegeMgmt
{
  public static void main(String s[])
  {
    ArrayList<Student> studentList = new ArrayList<Student>();
    Student s1 = new Student("devid", 9898989898L, "Stainford d23", true);
    studentList.add(s1);
    Student s2 = new Student("sames", 9895555598L, "Stainford d23", true);
    studentList.add(s2);
    Student s3 = new Student("devid", 9898989898L, "Stainford d23", false);
    studentList.add(s3);
    Student s4 = new Student("devid", 9898989898L, "Stainford d23", false);
    studentList.add(s4);
    Student s5 = new Student("devid", 9898989898L, "Stainford d23", true);
    studentList.add(s5);
  }
}


我想知道哪种方法最好从StudentList删除所有重复的条目。
如果两个或多个条目与此处相同,则此处为重复项

    Student s3 = new Student("devid", 9898989898L, "Stainford d23", false);
    studentList.add(s1);
    Student s4 = new Student("devid", 9898989898L, "Stainford d23", false);
    studentList.add(s1);


这代表isActive位,如果在我们的列表中继续设置相同的位,则需要删除该对象。那里s4对象应该被删除没有其他对象应该被删除。

最佳答案

您可能应该首先覆盖Object.equals中的Student(通过测试确定相等性的字段)。接下来,使用Set防止重复(例如,LinkedHashSet保留插入顺序)。

07-28 01:01
查看更多