Java从多个Array中删除重复的内容

时间:2015-12-22 10:11:07

标签: java arrays

我有一个关于如何删除多个数组的副本的问题。基本上我想要实现的是从4 Array进行比较,如果Array的包含完全相同,那么我想不想打印出来。 每个包含的示例如下所示:

ArrayStudentName   ArrayAge     ArrayGender  ArrayCourse
A                     9             Boy           IT
B                    10             Boy           IT
B                     9             Boy           IT
A                     9             Boy           IT
A                     9             Girl          IT

这是使用4次for循环删除副本的唯一方法,还是必须将4个数组合并为1个数组,然后在打印结果之前使用HashMap删除重复。 我需要的结果是:

ArrayStudentName       ArrayAge     ArrayGender  ArrayCourse
    A                     9             Boy           IT
    B                    10             Boy           IT
    B                     9             Boy           IT
    A                     9             Girl          IT

3 个答案:

答案 0 :(得分:6)

你应该勇敢并采取OOP路线。创建名为class的{​​{1}}并将所有值折叠到该类中。然后你只需要将它们放在Student中,根据定义,它不允许重复。

但是,如果您选择不使用Set,则必须实施equalshashcode(或Comparable

HashSet

答案 1 :(得分:0)

创建Student班级。

public class Student {
  private String name;
  private int age;
  private String gender;
  private String course;

  // Implement Getters and Setters here.


  // Then Override the equals method like this:
  @Override
  public boolean equals(Object obj) {
    Student student = (Student) obj;
    if ( this.name.equals( student.getName() ) &&
         this.age == student.getAge() &&
         this.gender.equals( student.getGender() ) &&
         this.course.equals( student.getCourse() )
       ) {
      return true;
    }
    else {
      return false;
    }
  }
}

现在,您可以创建一个Student个对象数组,并使用equlas方法对它们进行比较。

答案 2 :(得分:0)

简单方法:使用Set(获取唯一条目),保持顺序:LinkedHashSet

然后读取列表中的每一行<字符串>

并将它们保存在LinkedHashSet中<列表与LT;串GT; >

这就是这样的(你必须循环并扫描你的数据!)

Set<List<String>> sls=new LinkedHashSet<List<String>>();

sls.add(Arrays.asList(new String[]{"A","9","Boy","IT"}));
sls.add(Arrays.asList(new String[]{"B","10","Boy","IT"}));
sls.add(Arrays.asList(new String[]{"B","9","Boy","IT"}));
sls.add(Arrays.asList(new String[]{"A","9","Boy","IT"}));
sls.add(Arrays.asList(new String[]{"A","9","Girl","IT"}));

System.out.println(sls);