美文网首页
List赋值给另一个空List,如何保证两个List不指向同一个

List赋值给另一个空List,如何保证两个List不指向同一个

作者: 李小二的倔强 | 来源:发表于2023-02-21 16:00 被阅读0次

    问题:

        public static void main(String[] args) {
            List list1=new ArrayList();
            list1.add("1");
            list1.add("2");
            list1.add("3");
            System.out.println("list1:"+list1);
    
            List list2=new ArrayList();
    
            list2=list1;//简单的直接赋值
            list2.set(1,"12");
            System.out.println("list1:"+list1);
            System.out.println("list2:"+list2);
        }
    
    结果:
    list1:[1, 2, 3]
    list1:[1, 12, 3]
    list2:[1, 12, 3]
    
    结论:

    List 是通过指针指向地址来查询和存储数据的。而如果直接将一个List赋值给另一个List。则会导致该两个List都指向同一个地址。而导致如果后一个List的元素值改变,前一个List的元素值也随之改变。

    解决:

    所以为了避免出现上述现象和后果。则通过将元素值赋值给list的方法。这样则不会导致上述现象。

        public static void main(String[] args) {
            List list1=new ArrayList();
            list1.add("1");
            list1.add("2");
            list1.add("3");
            System.out.println("list1:"+list1);
    
            List list2=new ArrayList();
            //通过循环来赋值给另一个List,当然可以将循环换成
            list2.addAll(list1);
            //或者
    //        for(int i=0;i<list1.size();i++){
    //            Object object=list1.get(i);
    //            list2.add(object);
    //        }
            list2.set(1,"12");
            System.out.println("list1:"+list1);
            System.out.println("list2:"+list2);
        }
    
    结果:
    list1:[1, 2, 3]
    list1:[1, 2, 3]
    list2:[1, 12, 3]
    

    相关文章

      网友评论

          本文标题:List赋值给另一个空List,如何保证两个List不指向同一个

          本文链接:https://www.haomeiwen.com/subject/ybtokdtx.html