Как удалить дубликаты массива List
Имеется List массив типа Integer, пробовал использовать библиотеку org.apache.commons:commons-lang3, но тут такая проблема:
if(help_array.size() != 0){
for(int i=0; i<help_array.size()-1; i++){
for(int j=i+1; j<help_array.size(); j++)
if(help_array.get(i) == help_array.get(j)){
help_array = ArrayUtils.remove(help_array, j);
}
}
}
}
Заранее спасибо.
Ответы (1 шт):
Автор решения: Sergei Buvaka
→ Ссылка
Ну сохраните ваш список в сет. И он сам уберет все дубликаты.
Это для примера код:
List<Integer> help_array = new ArrayList<>();
help_array.add(1);
help_array.add(1);
help_array.add(2);
help_array.add(3);
help_array.add(3);
help_array.add(4);
help_array.add(4);
for (Integer item : help_array) {
System.out.print("[ " + item + " ], ");
}
System.out.print("\n");
Set<Integer> set = new HashSet<>(help_array);
for (Integer item : set) {
System.out.print("[ " + item + " ], ");
}
Вывод:
Первый список:
[ 1 ], [ 1 ], [ 2 ], [ 3 ], [ 3 ], [ 4 ], [ 4 ]
Сет:
[ 1 ], [ 2 ], [ 3 ], [ 4 ]
P.S. Единственное если вы будете использовать HashSet с сложными моделями позаботьтесь о том, чтоб корректно переопределить hascCode() и equals()
