繁体   English   中英

Java克隆项目从一个ArrayList到另一个?

[英]Java clone item from one ArrayList into another?

我试图将元素从一个arrayList复制到另一个,我的应用程序开始出现错误,我认为问题是我在做浅表复制。

如何将一个阵列中的项目添加到另一个阵列中,进行深度复制/克隆?

到目前为止,这就是我复制元素的方式:

public ArrayList<ResolveInfo> myAppsArr = new ArrayList(); 
public ArrayList<ResolveInfo> allAppsArr = new ArrayList(); 

    myAppsArr.add(allAppsArr.get(0));

如何将一个阵列中的项目添加到另一个阵列中,进行深度复制/克隆?

ResolveInfo有一个构造函数 ,可以为您创建新的重复对象:

myAppsArr.add(new ResolveInfo(allAppsArr.get(0)));

看来此构造函数仅是在API 17中添加的,您可以尝试使用通用克隆方法:

myAppsArr.add(allAppsArr.get(0).clone()); // No promises, I haven't tested this myself

或者,由于所有成员数据都是公共的,因此您可以创建一个手动创建新的ResolveInfo对象的方法。

对于所有android版本,最简单,最可靠的方法是将ResolveInfo序列化为宗地,并从该宗地创建新的ResolveInfo实例。

ResolveInfo r1 = new ResolveInfo();
Parcel p = Parcel.obtain();
r1.writeToParcel(p, 0);
ResolveInfo r2 = ResolveInfo.CREATOR.createFromParcel(p);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM