簡體   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