[英]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.