慕工程0101907
2022-07-20 19:34:14
我有一個數組列表,studentsList,如下所示:class Student{String name;List<Subject> subjects;}我想在另一個列表中復制對這些對象的引用,比如 studentsListCopy。當我對 studentsListCopy 中的學生對象進行任何更改時,比如更改名稱,它也應該反映在原始列表中,但是如果我從 studentsListCopy 中刪除學生對象,它不應該從原始列表中刪除。我怎樣才能做到這一點?
4 回答

守著一只汪
TA貢獻1872條經驗 獲得超4個贊
ArrayList<student> studentsListCopy = new ArrayList<student>();
for(int i=0;i<studentList;i++)
{
studentsListCopy.add(studentList[i])
}
你可能在尋找這樣的東西嗎?

慕容3067478
TA貢獻1773條經驗 獲得超3個贊
您必須簡單地創建一個新的List(應該使用子實現),將您的原始列表作為參數。
任何容器(原始列表或其副本)中元素的任何更改都會影響對象本身,因為您正在操作引用的對象,并且在任何這些容器中刪除或插入元素不會影響另一個容器,因為它們完全分開:
class Student {
String name;
List<Subject> subjects;
private void someMethod() {
// create a shallow copy
List<Subject> copy = new ArrayList<>(subjects);
// edit the contained elements
copy.get(0).setSomeProperty();
}
}

幕布斯7119047
TA貢獻1794條經驗 獲得超8個贊
從您的列表中創建一個不可修改的列表。通過這種方式,您可以編輯列表元素的屬性,并且不能從列表中刪除元素。如下所示:
List<Student> editStudentList = Collections.unmodifiableList(yourStudentList);
添加回答
舉報
0/150
提交
取消