java - 复制对新数组列表的引用并在 Java 中删除
问题描述
我有一个数组列表,studentsList,如下所示:
class Student{
String name;
List<Subject> subjects;
}
我想在另一个列表中复制对这些对象的引用,比如 studentsListCopy。当我对 studentsListCopy 中的学生对象进行任何更改时,比如更改名称,它也应该反映在原始列表中,但是如果我从 studentsListCopy 中删除学生对象,它不应该从原始列表中删除。我怎样才能做到这一点?
解决方案
您必须简单地创建一个新的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();
}
}
推荐阅读
- sql-server - 根据返回供应商 ID 的子查询获取前 10 个唯一供应商数据
- javascript - 在按键上应用滚动动画与在鼠标单击时相同
- sql-server - 修复迁移数据库上的孤立用户
- java - 为什么同一目录中的一个 java 类无法找到资源而其他类可以?
- angular - 设置 httpOptions 后请求停止工作
- python - BeautifulSoap 在后续页面上不起作用
- c++ - C++ 运算符重载?
- python-3.x - 在Python中使用循环删除空数据框
- c# - 使用 Winforms 删除文本表单文本文件
- r - 创建新的强调命令 R Markdown