Рекурсия - удаление дубликатов

Я работаю над методом, который рекурсивно удаляет дубликаты элемента в 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», но только одна отображается ввыход.

Спасибо за помощь.

Ответы на вопрос(5)

Ваш ответ на вопрос