【问题标题】:how we can delete duplicate entries from Array List [duplicate]我们如何从数组列表中删除重复条目 [重复]
【发布时间】:2015-06-10 05:13:43
【问题描述】:

我们如何从 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 对象,不应删除其他对象。

【问题讨论】:

  • 在那里他们显示删除字符串对象的重复项,这种方式不能应用于上述类型的问题。使用内部和外部循环我们可以删除。但是我想知道有没有其他方法?
  • @VinaySharma 这听起来很像您要求其他人做作业。你真的认为你从不尝试自己解决任务中学到更多吗?
  • 不,这是不对的,我已经做到了,但我认为复杂性是 O(2n) 所以我想知道此类问题的最佳解决方案。
  • Jägermeister 对上述问题有什么想说的吗?我已经通过使用两个循环解决了这个问题。你有其他解决方案吗?

标签: java


【解决方案1】:

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

【讨论】:

  • 这里的两个属性结合并定义学生是否重复,姓名和他的电话号码
  • @VinaySharma 好的,那你先写一个equals方法来测试namephone number
  • 谢谢你先生,但你能再看看上面的问题吗,对不起,我做了一些修改。谢谢你的回复
  • @VinaySharma 我建议您覆盖equals。我看了。你还没有。
【解决方案2】:

使用 Set 接口来避免重复值。 The Set Interface

Example of Duplicate value

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-06
    • 2018-05-15
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多