Android   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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.

updatE

我已经尝试将成员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,请注明来意。
标签: