根据一个List生成另外一个List,修改其中一个,导致另外一个List也在变化

1、两个List复制

        SysDic aSysDic = new SysDic();
        aSysDic.setDkey("1");
        aSysDic.setDnote("12");
        SysDic bSysDic = new SysDic();
        bSysDic.setDkey("2");
        bSysDic.setDnote("23");
        SysDic cSysDic = new SysDic();
        cSysDic.setDkey("3");
        cSysDic.setDnote("34");
        List asList = new ArrayList<>();
        asList.add(aSysDic);
        asList.add(bSysDic);
        asList.add(cSysDic);
        List bsList = new ArrayList<>(asList);
        for (SysDic dic : bsList) {
            dic.setDkey(dic.getDnote());
        }
        System.out.println(asList);
        System.out.println(bsList);
        System.out.println(asList.size());
        System.out.println(bsList.size());

结果:

第一个对象和第二个对象完全相同,dkey都被改变了 

 2、可以看出来,1个List已经通过new关键字,重新生成了一个,但是List中包含的SysDic对象是相同的,你修改其中一个,另外一个也会发生变化。所以即使复制了List也无济于事,需要将List中的对象也复制一下才可以互不干扰。

你可能感兴趣的:(list)