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,原来它在这有考虑赋值,专门留了个接口。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rom_Fisher

赠人玫瑰,手留余香。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值