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

时间:2015-10-01 04:54:40

标签: java

我有一个链表,我想制作该链表的副本。克隆运行速度比创建新实例更快,然后为它分配值? 例如,我有

LinkedList<MyClass> list2 = list.clone();

使用clone:

LinkedList<MyClass> list2 = new LinkedList<MyClass>();
   for(MyClass myclass : list){
   list2.add(myclass);
}

使用构造函数:

<LinearLayout
    android:id="@+id/images_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:orientation="vertical">

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipe_refresh_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ListView
            android:id="@+id/imagesList"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginBottom="05dp"
            android:layout_marginTop="05dp"
            android:divider="@android:color/transparent"
            android:dividerHeight="0.0sp" />

    </android.support.v4.widget.SwipeRefreshLayout>

</LinearLayout>

1 个答案:

答案 0 :(得分:2)

最好使用浅拷贝构造函数。您编写了使用构造函数而未使用。你正在循环它。

其中我建议使用

ogc-schemas

Josh Bloch suggest the same

  

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