java - 如何复制一个对象(在这种情况下是一个数组列表)然后只清除其中一个
问题描述
我有 2 个包含 ArrayList 的对象,我想执行以下步骤:
- 制作第一个对象的副本(因为其中有一些有用的数据)
- 清除第二个对象中的 ArrayList
将第一个对象的 ArrayList 中的 1 个元素添加到第二个对象的 ArrayList
obj1.arraylist.add("f"); obj2=obj1; obj2.arrarylist.clear; obj2.arraylist.add(obj1.arraylist.get(0));
我收到此错误:
W/System.err: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
解决方案
obj1 中有很多其他数据,所以构造函数不是一个选项。所以我使用了 clone() 并且它起作用了。
OBJ obj1=new OBJ();
obj1.arraylist.add("f");
.
.
//add some data to obj1 like
OBJ obj2=new OBJ();
obj2=(OBJ)obj1.clone();
obj2.arrarylist=new Arraylist<OBJ>();
obj2.arraylist.add(obj1.arraylist.get(0));
我只是添加一个克隆工具
public class OBJ implements Cloneable{
...
public Object clone()throws CloneNotSupportedException{
return super.clone();
}}
推荐阅读
- netlogo - NetLogo:如何向除了原始单元格之外的单元格上的海龟提问?
- directory - RPM 不负责删除作为 RPM 重定位的一部分创建的目录
- c - 如何在c中将数字排列成蝴蝶结形状
- sql - 自定义 SQL 查询中的重复记录
- r - BlueSky Statistics - String to date [time] 问题
- macos - 以编程方式禁用“摇动以查找指针”MacOS 功能而不隐藏光标
- laravel - Laravel 2 以相同的形式提交按钮
- java - 如何在 macOS 上为 IntelliJ 项目安装 Google OR-Tools
- git - git将未更改的文件添加到“未暂存的文件”中
- c++ - g++ 无法解决模板函数重载