我有一个关于如何删除多个数组的副本的问题。基本上我想要实现的是从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
答案 0 :(得分:6)
你应该勇敢并采取OOP路线。创建名为class
的{{1}}并将所有值折叠到该类中。然后你只需要将它们放在Student
中,根据定义,它不允许重复。
但是,如果您选择不使用Set
,则必须实施equals
和hashcode
(或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);