ArrayList使用禁忌——ArrayList之间的赋值(小记),arraylist小记
分享于 点击 16851 次 点评:239
ArrayList使用禁忌——ArrayList之间的赋值(小记),arraylist小记
不积跬步无以至千里
关于ArrayList的使用,常常我们会初始化后,通过一个外界的借口获取到一个另一个ArrayList,然后对我们本类里的ArrayList对象一顿骚操作,还以为被传过来的对象没被改变,满满的沉浸在自己小聪明的窃喜之中(不破坏原有的ArrayList,而用另一个ArrayList去操作,挺好)。
其实如果对象ArrayList有深入研究或者理解指针的概念,也许你也不会犯这个低级的错误,其实你再赋值给你本类对象的同时,你就是把本类ArrayList对象指针也指向了传过来的ArrayList,因此你这样操作,修改的还是传过来的ArrayList,因此正确的操作方法(不想影响传过来的ArrayList,而想有一个新的ArrayList去操作这个ArrayList数据源)是要这样的:
(1)for循环,添加数据
private ArrayList<ButtonBean> buttomContainerData = new ArrayList<>();
private void initData() {
buttomContainerData.clear();
for (int i = Data.BRIEF_SHOW.size(); i > 0; i--) {
buttomContainerData.add(0, Data.BRIEF_SHOW.get(i - 1));
}
}
其中的buttomContainerData就是本类的ArrayList对象,而Data.BRIEF_SHOW就是外界的ArrayList对象。用过for循环把数据源中数据手动添加到本类中的ArrayList对象即可。
(2)用ArrayList的clone方法
private void initData() {
buttomContainerData.clear();
ArrayList<ButtonBean> temporaryArrayList = (ArrayList<ButtonBean>) Data.BRIEF_SHOW;
buttomContainerData = (ArrayList<ButtonBean>) temporaryArrayList.clone();
}
也可以,直接调用它的api,原来它在这有考虑赋值,专门留了个接口。
相关文章
- 暂无相关文章
用户点评