2013-10-10 92 views
0

Java中是否存在類似List的容器,它提供了在給定子列表的開始和結束的迭代器的情況下,在常量時間內用另一個列表替換子列表的功能?在Java中用另一個列表替換子列表

例如,我可以做到以下幾點:

List<T> l1, l2; 
ListIterator<T> i1, i2; 

// Initialize the above variables correctly... 

l1.replace(i1, i2, l2); 

如果我是我自己的滾動鏈接的列表,這將是容易的,所以我會假設這是用正宗可行的任務。

在此先感謝!

回答

1

不,沒有辦法在固定時間內使用內置的API來執行此操作。

如果我在滾動我自己的鏈表,這很容易,所以我認爲這是一個使用集合的可行任務。

不完全。即使滾動自己的實現,你不能以一種

  • 只會改變l1,不l2
  • 將讓你與l3,做同樣的操作不止一次,也許這樣做在一定時間l2

很容易想象,如果這是建立在JDK的API,可能會導致意外的行爲,這是非常令人不快的調試這些問題。

+0

你對這種影響l2的行爲是正確的。在我的情況下,這並不重要,因爲l2是爲了插入到l1而嚴格創建的,並且從不以其他方式訪問。有意義的是,這通常不是理想的行爲。我沒有想過副作用。非常感謝! – fwilliams

0
+0

不知道在哪裏保證的地方,替換髮生在不變的時間。 Afaik它實際上會迭代子列表中的每個元素並將其添加到當前列表中。 – Alowaniak

+0

如何刪除?如果有匹配,removeAll似乎相當於刪除。還有是在O(1)時間實現addAll的AbstractList的實現嗎? – fwilliams

相關問題