Как удалить идущие подряд дубликаты в списке?

133
02 июля 2019, 03:40

У меня есть List<String> со значениями например ["a", "a", "a", "b", "c", "c", "d", "d", "d"] из него должно получиться ["a", "b", "d"]. Причём, если после удаления дубликатов возникли новые, то удалить нужно и их тоже. Например список ["b", "a", "a", "b"] должен остаться пустым после обработки.

Мой код не делает того, что нужно

static List<String> noDupl(List<String> strings) {
    for (int i = 1; i < strings.size() - 1; i++) {
        if(strings.get(i).equals(strings.get(i + 1))){
            strings.remove(strings.get(i));
            strings.remove(strings.get(i+1));
        }
    }
    return strings;
}

Что я делаю не так?

Answer 1
     for (int i = 0; i < list.size() - 1; i++){
         if (list.get(i).equals(list.get(i + 1))){ // пара одинаковых записей подряд
             list.remove(i + 1); // тут можно даже написать list.remove(i)
             list.remove(i);     // и удалить еще один элемент
             i = i == 0 ? -1 : i -2 ;             
         }
     }

Ищем пару, удаляем, продолжаем поиск с предыдущего элемента (вдруг там новая пара).

Answer 2
List<String> sList = new ArrayList<>();
sList.add("2");
sList.add("2");
sList.add("3");
sList.add("4");
sList.add("3");
Set<String> sSet = new HashSet<>(sList);
sList.clear();
sList.addAll(sSet);

Удалит все дубликаты! В консоль: 2 3 4

READ ALSO
Выделение строки цветом в TableView

Выделение строки цветом в TableView

Есть POJO-класс Option c одним String полем description

141
Не вызывается addButtonAction

Не вызывается addButtonAction

Есть один FXML файл "samplefxml" код ниже:

157
Java выдается ошибка при компиляции

Java выдается ошибка при компиляции

Нашел в инете код но он выдает ошибку:

137