Я хочу удалить все элементы между двумя выбранными элементами в связанном списке Java
Я хочу удалить все элементы между двумя выбранными элементами в связанном списке Java, который я пробовал с этим кодом, но он не работает.. Любые предложения!?
public <t> static void removeAtRange( int element1 ,
int element2 ) {
while ( i >= element1 && i < element2 && i < length.size()) {
if (length.get(i)== element1) {
Length.remove(i);
} else {
i++;
}
}
}
3 ответа
Может быть, было бы лучше создать новый LinkedList и поместить в него первый и последний элемент из старого списка. Если это решение не подходит для вас, замените цикл на итератор над коллекцией. Затем вы можете удалить элементы с помощью этой команды:
iterator.remove();
Это удалит все элементы между данными индексами
public static void removeAtRange( int indexFrom , int indexTo ) {
// TODO: Might be good to check these are valid indices in the linked list
ArrayList toRemove = new ArrayList();
for(int i = indexFrom+1; i< indexTo; i++){
toRemove.add(ll.get(i));
}
ll.removeAll(toRemove); // remove all these from linkedlist
System.out.println("After removing from =["+ indexFrom +"] to = ["+ indexTo +"] ll is =["+ ll.toString() +"]");
}
Вы пытаетесь сделать что-то подобное? В настоящее время вы удаляете только элемент по индексу element1
,
public static void removeRange(List<?> list, int start, int end)
{
if (end > list.size() || start < 0) {
throw new IndexOutOfBoundsException();
}
for (int x = start; x < end; x++) {
list.remove(x);
}
return list;
}