繁体   English   中英

Java中的数据结构通过操作删除节点后的所有节点

[英]Data structure in Java with operation remove all nodes after a node

我正在寻找Java中的(预定义)数据结构,该结构将删除节点后的所有元素。 下面给出了一个示例表示。

例如:

移除前

head
 ┕>1 -> 2 -> 3 -> 4 -> 5 -> 6 ->7

去除后

removeAllFrom(5)

head
┕>1 -> 2 -> 3 -> 4

我检查了很多Java DS,但没有在Java中找到理想的DS。

(1。首选java.util中的数据结构。

2。 在头插入和迭代是我正在使用的其他操作)

谢谢您的帮助 :)


编辑-1

找到指定要删除的元素(在示例中为5)之后,我们只需要删除下一个节点之间的链接即可。

我检查了给出答案的实现,但是在两种情况下,它都是分别删除每个节点。 只是想知道其他任何方法。 :)

public void clear() {
    removeRange(0, size());
}

protected void removeRange(int fromIndex, int toIndex) {
    ListIterator<E> it = listIterator(fromIndex);
    for (int i=0, n=toIndex-fromIndex; i<n; i++) {
        it.next();
        it.remove();
    }
}

好吧, java.util.LinkedList实现了List接口,该接口具有subList()方法。 使用该方法,可以获得原始列表尾部的子列表,然后通过清除子列表来截断原始列表:

list.subList(firstIndexToRemove,list.size()).clear();

从Javadoc:

列出java.util.List.subList(int fromIndex,int toIndex)

返回此列表中指定的fromIndex(包括)和toIndex(不包括)之间的视图。 (如果fromIndex和toIndex相等,则返回列表为空。)此列表支持返回的列表,因此返回列表中的非结构性更改会反映在此列表中,反之亦然。 返回的列表支持此列表支持的所有可选列表操作。

此方法消除了对显式范围操作(数组通常存在的那种范围)的需要。 通过传递subList视图而不是整个列表,可以将期望列表的任何操作用作范围操作。 例如,以下成语从列表中删除了一系列元素:

list.subList(from,to).clear();

这要求您知道要从中删除所有元素的节点的索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM