我正在努力使列表成为另一个列表的直接副本。这会有用吗?
list1 = list2
它会传输所有内容还是什么都没有?
答案 0 :(得分:1)
您没有复制,您正在添加参考。进行附加引用和将项插入列表都是 atomic 。如果程序不可拆分,则该过程是原子的。它是完全完成还是没有完成。
另请参阅以下有关如何正确克隆列表的主题。 Java Collections copy list - I don't understand
Google搜索java clone method
也会启发你。
答案 1 :(得分:0)
它没有赢。在java中克隆对象并不是那么简单,请参阅链接How do I copy an object in Java?
答案 2 :(得分:0)
没有。它只会使list2
引用指向存储在list1
引用中的相同列表。您可以使用copy constructor
将引用从一个列表复制到另一个列表,但要小心,因为这不是深层复制 - >新列表将包含与原始列表中存储的完全相同的对象。这是示例
List<String> list1 = new ArrayList<>();
list1.add("one");
list1.add("two");
List<String> list2 = list1;//now list2 will point to the same list as list1
list2.add("A");
//lets print content of list1
System.out.println(list1); // -> output: [one, two, A]
//--------------------------------------------------------------
//This way you can create separate list that contains same values as list1
List<String> list3 = new ArrayList(list1);
list3.add("B");
System.out.println(list1); // -> output: [one, two, A]
System.out.println(list3); // -> output: [one, two, A, B]
答案 3 :(得分:0)
在大多数情况下,使用直接分配无用。就好像你有两个不同名称的完全相同的变量,因为它们都指向相同的内存地址。
如果要将列表克隆到另一个列表,则应使用copy constructor
e.g。
ArrayList<E> copyList = new ArrayList<E>(originalList);