如何在 Java 中建立列表的淺複製?
我們可以使用 List 介面的 addAll() 方法輕鬆建立列表的淺複製。
語法
boolean addAll(Collection>? extends E> c)
將指定集合中的所有元素按指定集合的迭代器返回的順序追加到此列表的末尾。
型別引數
E − 傳遞的集合的執行時型別。
引數
c − 包含要新增到此列表的元素的集合。
返回值
如果此列表因呼叫而更改,則返回 true
丟擲
UnsupportedOperationException − 如果此列表不支援 addAll 操作。
ClassCastException − 如果指定集合的元素的類阻止其新增到此列表。
NullPointerException − 如果指定集合包含一個或多個空元素,而此列表不允許空元素,或者如果指定集合為空。
IllegalArgumentException − 如果指定集合的元素的某些屬性阻止其新增到此列表。
示例
以下示例演示如何使用 addAll() 方法建立列表的淺複製。
package com.tutorialspoint; import java.util.ArrayList; import java.util.List; public class CollectionsDemo { public static void main(String[] args) { List<Student> list = new ArrayList<>(); list.add(new Student(1, "Zara")); list.add(new Student(2, "Mahnaz")); list.add(new Student(3, "Ayan")); List<Student> list1 = new ArrayList<>(); list1.addAll(list); // Modify the original list and change will reflect in both list list.get(0).setName("Zara Vasim"); System.out.println(list); System.out.println(list1); // Modify the copied list and change will reflect in both list list1.get(0).setName("Zara"); System.out.println(list); System.out.println(list1); } } class Student { private int id; private String name; public Student(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public boolean equals(Object obj) { if(!(obj instanceof Student)) { return false; } Student student = (Student)obj; return this.id == student.getId() && this.name.equals(student.getName()); } @Override public String toString() { return "[" + this.id + "," + this.name + "]"; } }
這將產生以下結果 -
輸出
[[1,Zara Vasim], [2,Mahnaz], [3,Ayan]] [[1,Zara Vasim], [2,Mahnaz], [3,Ayan]] [[1,Zara], [2,Mahnaz], [3,Ayan]] [[1,Zara], [2,Mahnaz], [3,Ayan]]
廣告