Рекурсия - удаление дубликатов
Я работаю над методом, который рекурсивно удаляет дубликаты элемента в ArrayList. Но я столкнулся с небольшой проблемой, мой метод работает и удаляет некоторые элементы, но не все дубликаты.
Вот мой вход:
100, 200, 200, 300, 400, 300, 100, 500, 500, 400, 100, 400, 100, 100
И вот вывод:
100, 200, 300, 400, 100, 500, 100
И мой метод:
public static void removeDuplicates(ArrayList<Integer> list, int counter){
if(list == null){
throw new NullPointerException();
}
if(counter < list.size()){
if(list.contains(list.get(counter))){
list.remove(list.lastIndexOf(list.get(counter)));
}
removeDuplicates(list, ++counter);
}
}
Я понимаю, что я только удаляю последний элемент указанного значения, а затем перехожу к следующему. Мне было интересно, как я должен изменить это, чтобы удалить все элементы, которые являются дубликатами. Кроме того, одна часть моего вывода, которая меня смущает, состоит в том, что есть три значения «400», но только одна отображается ввыход.
Спасибо за помощь.