我想删除链表java中两个选定元素之间的所有元素

时间:2015-02-28 15:39:24

标签: java linked-list removeall

我想删除链接列表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 个答案:

答案 0 :(得分:0)

创建新的LinkedList可能会更好,并在其中放置旧列表中的第一个和最后一个元素。如果此解决方案不适合您,请使用迭代器替换循环。然后,您可以使用以下命令删除元素:

iterator.remove();

答案 1 :(得分:0)

你想要完成这样的事吗?目前,您只删除索引为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;
}

答案 2 :(得分:0)

这将删除给定索引之间的所有元素

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() +"]");

}