Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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 - Fatal编程技术网

Java 使用克隆或使用构造函数和赋值哪个更有效

Java 使用克隆或使用构造函数和赋值哪个更有效,java,Java,我有一个linkedlist,我想复制该linkedlist。克隆的运行速度是否比创建新实例然后为其赋值快? 比如我有 LinkedList<MyClass> list = new LinkedList<MyClass>(); list.add(instance1); list.add(instance2); LinkedList=新建LinkedList(); 列表。添加(实例1); 列表。添加(实例2); 使用克隆: LinkedList<MyClass&g

我有一个linkedlist,我想复制该linkedlist。克隆的运行速度是否比创建新实例然后为其赋值快? 比如我有

LinkedList<MyClass> list = new LinkedList<MyClass>();
list.add(instance1);
list.add(instance2);
LinkedList=新建LinkedList();
列表。添加(实例1);
列表。添加(实例2);
使用克隆:

LinkedList<MyClass> list2 = list.clone();
LinkedList list2=list.clone();
使用构造函数:

LinkedList<MyClass> list2 = new LinkedList<MyClass>();
   for(MyClass myclass : list){
   list2.add(myclass);
}
LinkedList list2=新建LinkedList();
用于(MyClass MyClass:列表){
列表2.add(myclass);
}

最好使用浅复制构造函数。您编写了使用构造函数而未使用。你在绕圈子

在我建议使用的所有方法中

List<MyClass> list2 = new LinkedList<MyClass>(list);
List list2=新链接列表(List);
甚至

事实是,除了复制功能外,您没有通过实现可克隆和提供公共克隆方法来为客户提供任何功能。如果您提供了一个具有不同名称的复制操作,并且没有实现Cloneable,那么这并不比您得到的更好。这基本上就是使用复制构造函数所做的。复制构造函数方法有几个优点,我在书中讨论过。一个很大的优点是,可以使副本具有与原件不同的表示形式。例如,可以将LinkedList复制到ArrayList中


您不是在使用构造函数,而是在复制项。您可以自己对其进行基准测试:)