我想出瞭如何比較兩個ArrayList並將重複項添加到新的ArrayList。對象的ArrayList,比較對象並查找重複項,將對象添加到新的ArrayList中,每個副本只有一次
ArrayList<Student> allStudentsA = assignStudents();
ArrayList<Student> allStudentsB = allStudentsA;
for (Student studentA : allStudentsA) {
for (Student studentB : allStudentsB) {
if (studentA.getId().equals(studentB.getId()) && studentA.getEduNumber() != studentB.getEduNumber()) {
duplicateStudents.add(studentB);
}
}
}
然而,我做到了這一點,我添加每個副本一次,每次在那裏。由於「羅達巴」有7次,因爲她有7個不同的優先次序,所以她被列入名單7 * 6次。繼承人如何打印出:
for (Student student : duplicateStudents) {
if (student.getFornavn().equals("Rodaba")) {
System.out.println("Name: " + student.getFornavn() + "\t \t" + "EduNumber: " + student.getOptagelsesområde() + "\t" + "Prio: " + student.getPrio());
}
}
有一個聰明的辦法可以避免這種情況,只因爲她已經申請了每個優先增加「Rodaba」一次? 繼承人我的輸出,有沒有辦法只獲得標記的部分?
我一直堅持這個很長一段時間。我真的很感激這兩個建議,更好的方式來製作ArrayLists,以及如何找出這個問題。
我認爲使用'Map'可能是一個很好的解決方案。它也消除了嵌套的'for'循環。 –
爲什麼不檢查學生是否已經在列表中?此外,它與此沒有任何關係,但是您可以重寫您的'Student#toString'方法以更加乾淨地打印它 – Nathan
@Nathan問題在於學生將在_n_次列表中,其中_n_是他們優先級的數量有。 –