Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中以固定时间用另一个列表替换子列表_Java_List_Collections - Fatal编程技术网

在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

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、l2);
如果我滚动我自己的链表,这将很容易,所以我假设这是一个使用集合的可行任务


提前谢谢

看看。

不,使用内置API无法在固定时间内完成此操作

如果我滚动我自己的链表,这将很容易,所以我假设这是一个使用集合的可行任务

不完全是。即使滚动您自己的实现,您也不能在固定时间内以

  • 只会更改
    l1
    ,而不会更改
    l2
  • 将允许您多次执行相同的操作,可能是使用
    l3
    l2

很容易想象,如果将其内置到JDK API中,这些问题可能会导致意外行为,这对调试来说是非常不愉快的。

不确定在哪里可以保证在固定时间内进行替换。好吧,它实际上会遍历子列表中的每个元素,并将其添加到当前列表中。删除该元素怎么样?如果存在匹配项,removeAll似乎等同于remove。还有一个AbstractList的实现,它在O(1)时间内实现了addAll吗?关于这个影响l2的行为,您是正确的。在我的例子中,这并不重要,因为l2的创建完全是为了插入到l1中,并且从未以其他方式访问过。这是有道理的,这通常不是令人满意的行为。我没有想到副作用。谢谢!