欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

ArrayList使用禁忌——ArrayList之间的赋值(小记),arraylist小记

来源: javaer 分享于  点击 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,原来它在这有考虑赋值,专门留了个接口。

相关文章

    暂无相关文章

用户点评