将引用复制到新数组列表并在Java中删除

时间:2019-03-06 13:44:41

标签: java arraylist clone

我有一个数组列表,studentsList,如下所示:

class Student{
String name;
List<Subject> subjects;
}

我想将对这些对象的引用复制到另一个列表中,例如studentsListCopy。当我对studentsListCopy中的Student对象进行任何更改时,比如说更改名称,它也应反映在原始列表中,但是如果我从studentsListCopy中删除student对象,则不应将其从原始列表中删除。我该如何实现?

4 个答案:

答案 0 :(得分:0)

使用对象创建新列表,例如new ArrayList<>(subjects)并随您便。

答案 1 :(得分:0)

您只需创建一个以原始列表作为参数的新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();
  }
}

答案 2 :(得分:0)

ArrayList<student> studentsListCopy = new ArrayList<student>();

for(int i=0;i<studentList;i++)
{
   studentsListCopy.add(studentList[i])
}

您可能正在寻找类似的东西吗?

答案 3 :(得分:0)

从列表中创建一个不可修改的列表。这样,您可以编辑列表元素的属性,而不能从列表中删除元素。如下所示:

List<Student> editStudentList = Collections.unmodifiableList(yourStudentList);