Я хочу удалить все элементы между двумя выбранными элементами в связанном списке 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;
}
Другие вопросы по тегам