在Java中以固定时间用另一个列表替换子列表
Java中是否有一个类似列表的容器,在给定子列表开始和结束的迭代器的情况下,该容器能够在固定时间内用另一个列表替换子列表 例如,我可以执行以下操作:在Java中以固定时间用另一个列表替换子列表,java,list,collections,Java,List,Collections,Java中是否有一个类似列表的容器,在给定子列表开始和结束的迭代器的情况下,该容器能够在固定时间内用另一个列表替换子列表 例如,我可以执行以下操作: List<T> l1, l2; ListIterator<T> i1, i2; // Initialize the above variables correctly... l1.replace(i1, i2, l2); 列表l1、l2; 列表迭代器i1,i2; //正确初始化上述变量。。。 l1.替换(i1、i2、l
List<T> l1, l2;
ListIterator<T> i1, i2;
// Initialize the above variables correctly...
l1.replace(i1, i2, l2);
列表l1、l2;
列表迭代器i1,i2;
//正确初始化上述变量。。。
l1.替换(i1、i2、l2);
如果我滚动我自己的链表,这将很容易,所以我假设这是一个使用集合的可行任务
提前谢谢 看看。不,使用内置API无法在固定时间内完成此操作 如果我滚动我自己的链表,这将很容易,所以我假设这是一个使用集合的可行任务 不完全是。即使滚动您自己的实现,您也不能在固定时间内以
- 只会更改
,而不会更改l1
l2
- 将允许您多次执行相同的操作,可能是使用
和l3
l2
很容易想象,如果将其内置到JDK API中,这些问题可能会导致意外行为,这对调试来说是非常不愉快的。不确定在哪里可以保证在固定时间内进行替换。好吧,它实际上会遍历子列表中的每个元素,并将其添加到当前列表中。删除该元素怎么样?如果存在匹配项,removeAll似乎等同于remove。还有一个AbstractList的实现,它在O(1)时间内实现了addAll吗?关于这个影响l2的行为,您是正确的。在我的例子中,这并不重要,因为l2的创建完全是为了插入到l1中,并且从未以其他方式访问过。这是有道理的,这通常不是令人满意的行为。我没有想到副作用。谢谢!