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
使用内置LinkedList进行Java复制_Java_List_Linked List_Copy_Live - Fatal编程技术网

使用内置LinkedList进行Java复制

使用内置LinkedList进行Java复制,java,list,linked-list,copy,live,Java,List,Linked List,Copy,Live,我有一个关于复制链接列表的问题。我正在从事一个项目,该项目接收数据并将其存储在LinkedList中。这是通过网络端口通过实时提要完成的,我希望能够将此列表中的数据复制到另一个列表中,以便处理收集的数据。由于总是有数据被收集,有没有像C中那样的方法来更改“指针”,以便第一个列表的头现在与第二个LinkedList关联,因为第一个列表对于新数据是空的 下面的一个呢: second.addAll(first); first.clear(); linkedlist.push(newHeadValue

我有一个关于复制链接列表的问题。我正在从事一个项目,该项目接收数据并将其存储在
LinkedList
中。这是通过网络端口通过实时提要完成的,我希望能够将此列表中的数据复制到另一个列表中,以便处理收集的数据。由于总是有数据被收集,有没有像C中那样的方法来更改“指针”,以便第一个列表的头现在与第二个
LinkedList
关联,因为第一个列表对于新数据是空的

下面的一个呢:

second.addAll(first);
first.clear();
linkedlist.push(newHeadValue)

linkedlist.addFirst(newHeadValue)

linkedlist.add(0,newHeadValue)


或者你明确地想要一个头部没有数据的步骤吗?

听起来你需要的是两个队列。有1个队列用于收集,1个队列用于处理。在某个时刻,您需要来回交换它们。只要您短暂锁定开关,一切都应该正常。没有必要乱动链表上的指针,也可以避免复制内容

这样说,也许你应该考虑一下执行队列的执行器的并发包。在不太了解您的具体任务的情况下,这些任务似乎更适合您所做的工作,并允许您避免手工编写详细信息


编辑:这就是我所说的软件包

您知道addAll()的时间复杂度吗?由于我正在接收数据,我担心addAll()将花费x时间,而y数量的数据已在x时间内添加到第一个链表中,使用clear()将导致y数量的数据丢失。看起来addAll调用要添加的集合上的数组,然后在数组中逐个迭代添加元素。不幸的是,复杂度将是
O(n)
,因为无法在
LinkedList
中检索底层节点结构。但是,如果性能确实是一个问题,我建议您编写自己的
LinkedList
实现,以支持串联。当它调用阵列时,此调用是否为深度副本?我想要一个深度副本,正如我所说的,我担心并发性。有没有办法扩展链表类来添加Nessery方法?我不需要head为null的步骤。我只需要将数据复制到另一个链表中。我最担心的是同意。我不理解这个问题,因为你想以两个列表共享尾部结束。我在想,到目前为止,这可能是这个问题的最佳答案。我会调查你链接的包裹。谢谢