大佬教程收集整理的这篇文章主要介绍了java – ArrayList未使用预定义大小进行初始化,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个类型为my model的ArrayList,它包含3个项目,即ArrayList大小为3.
ArrayList<Model> mModels; // mModels.size() = 3
@H_403_7@我必须将此ArrayList复制到另一个ArrayList中,因此为此我创建了另一个相同类型的ArrayList,如下所示.
ArrayList<Model> localmodels = new ArrayList<>(mModels.size());
@H_403_7@下一步是将数据从成员变量复制到局部变量,因为我不想复制成员变量的引用我已经使用了Collections.copy()
Collections.copy(localmodels,mModels);
@H_403_7@但是我通过告诉目标大小应该大于源大小来获取ArrayOutOfBoundException.所以我记录了两个可变大小.然后对于成员我得到的大小为3,而localVariable记录的大小为0.
我已经尝试将成员ArrayList复制到本地.但它只复制参考.有没有办法复制数据而不是参考?
//1 for(Model model: mModels){ localmodels.add(model); } //2 for(Model model: mModels){ localmodels.add((Model)model.clone()); } //3 Collections.copy(localmodels, mModels); //4 localmodels = (ArrayList<Model>)mModels.clone(); //5 localmodels = new ArrayList<>(mModels);
@H_403_7@所以我的问题是
1-如何从一个ArrayList复制(值更改不应该反映)值到另一个?
2-为什么java / android总是复制引用
3-如何使用预定义的大小初始化ArrayList(已经回答)
解决方法:
ArrayList<Model> localmodels = new ArrayList<>(mModels.size());
@H_403_7@创建一个ArrayList,其初始容量等于mModels.size()(在您的示例中为3),但它包含0个元素.
您必须向ArrayList添加元素才能使元素具有正数.
如果希望localmodels ArrayList包含与mModels相同的元素,可以使用以下命令对其进行初始化:
ArrayList<Model> localmodels = new ArrayList<>(mModels);
@H_403_7@这将为您提供原始ArrayList的浅表副本.
以上是大佬教程为你收集整理的java – ArrayList未使用预定义大小进行初始化全部内容,希望文章能够帮你解决java – ArrayList未使用预定义大小进行初始化所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。