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

Я работаю над методом, который рекурсивно удаляет дубликаты элемента в ArrayList. Но я'Я столкнулся с небольшой проблемой, мой метод работает и удаляет некоторые элементы, но не все дубликаты.

Вот's мой вход:

100, 200, 200, 300, 400, 300, 100, 500, 500, 400, 100, 400, 100, 100

И здесь's вывод:

100, 200, 300, 400, 100, 500, 100

И мой метод:

public static void removeDuplicates(ArrayList 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);
    }
}

Я понимаю что яm удаляет только последний элемент указанного значения, а затем переходит к следующему. Мне было интересно, как я должен изменить это, чтобы удалить все элементы, которые являются дубликатами. Кроме того, одна часть моего вывода, которая смущает меня, есть три значения:400', но только один появляется ввыход.

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

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

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