Удаление дубликатов элементов в arraylist
У меня есть следующий вопрос
Цитата:Вам дается следующая последовательность чисел,
1, 652 ,5, 15, 385, 4 , 55, 666, 13, 2, 4658, 9, 55, -588, 10, 1083, 17 ,4.
Вы можете удалить дубликаты номеров с помощью только использование For loop и ArrayList .
И это мой выход
Before remove : [-588, 1, 2, 4, 4, 5, 9, 10, 13, 15, 17, 55, 55, 385, 652, 666, 1083, 4658] [-588, 2, 4, 9, 13, 17, 55, 652, 1083]Некоторые элементы удаляются.
Редактировать
После того, как я удалю метод сортировки, мой вывод будет выглядеть следующим образом
Before remove : [1, 652, 5, 15, 385, 4, 55, 666, 13, 2, 4658, 9, 55, -588, 10, 1083, 17, 4] [1, 5, 385, 55, 13, 4658, -588, 1083, 4]
Что я уже пробовал:
public class Ex { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(1); list.add(652); list.add(5); list.add(15); list.add(385); list.add(4); list.add(55); list.add(666); list.add(13); list.add(2); list.add(4658); list.add(9); list.add(55); list.add(-588); list.add(10); list.add(1083); list.add(17); list.add(4); Collections.sort(list); System.out.println("Before remove : " + list); for (int i = 0; i < list.size(); i++) { for (int j = 1; j < list.size(); j++) { if (list.get(i) == list.get(j)) { list.remove(j); } } } System.out.println(list); } }
Richard MacCutchan
Проблема возникает из-за того, что вы удаляете элементы из списка в цикле, который зависит от list.size. Поэтому всякий раз, когда вы удаляете элемент, количество элементов на единицу меньше, чем ожидает цикл, поэтому вы получите неправильные результаты.