У меня есть 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;
}
Что я делаю не так?
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 ;
}
}
Ищем пару, удаляем, продолжаем поиск с предыдущего элемента (вдруг там новая пара).
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
Виртуальный выделенный сервер (VDS) становится отличным выбором