我有一个数组列表,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
提交
取消
