У меня есть метод, предназначенный для удаления дублирующихся объектов из ArrayList.Объекты имеют пользовательский класс IndividualEntry, и метод выглядит следующим образом:
private static ArrayList<IndividualEntry> cleanList(ArrayList<IndividualEntry> inputList){
ArrayList<IndividualEntry> thisList = inputList;
IndividualEntry thisEntry;
IndividualEntry thatEntry;
for(int i = 0; i<thisList.size();i++){
thisEntry = thisList.get(i);
System.out.println("First entry is "+thisEntry);
for(int j = (i+1); j<thisList.size(); j++){
thatEntry = thisList.get(j);
System.out.println("Second entry is "+thatEntry);
if(thisEntry.equals(thatEntry)){
thisList.remove(thatEntry);
System.out.println("Entry removed: "+thatEntry);
}
}
}
return thisList;
}
Метод успешно удаляет НЕКОТОРЫЕ дубликаты.ArrayList перед запуском этого метода выглядит следующим образом (каждая буква представляет уникальный объект):
ABBCABBAABBBBC
После запуска метода он выглядит следующим образом:
CABBBC
Я не понимаю, почему этот метод будет переупорядочивать результаты и по-прежнему включать дубликаты, но я подозреваю, что это происходит из-за изменения thisList
во внутреннем цикле for, но в целом цикл for по-прежнему использует оригинальныйзначение thisList
.Это верно?Что бы исправить это?