Я пытаюсь выполнить эту простую работу Java, но это не так, и я не могу понять, почему.Метод remove() из LinkedList не работает
Вот мой код:
public LinkedList<T> toSet()
{
LinkedList<T> retList;
retList = lista;
for(T elem1 : retList)
for(T elem2 :retList)
{
if(retList.indexOf(elem1) == retList.indexOf(elem2))
continue;
else if(elem1.equals(elem2))
retList.remove(elem1);
}
return retList;
}
Метод должен удалить элементы, которые появляются более чем один раз в списке. Я отлаживал его с помощью eclipse, и я обнаружил, что retList.remove(elem1)
оставляет список без изменений!
Где моя ошибка?
Если это сработало, оно выдаст исключение CommodificationException. Подумайте об использовании итераторов для ваших циклов. – ApproachingDarknessFish
Я предлагаю вам использовать Set. Это гарантирует, что у вас нет дубликатов в первую очередь. –
@ValekHalfHeart: Вы имеете в виду «ConcurrentModificationException»? – jlordo