集合赋值及for循环删除符合条件的元素

一、Java语言中ArrayList对象能直接赋值给另一个ArrayList对象吗?

https://zhidao.baidu.com/question/399214655.html

ArrayList<Integer> num1 = new ArrayList<Integer>();
num1.add(1);
num1.add(2);

ArrayList<Integer> num2 = new ArrayList<Integer>();
num2.add(1);
num2.add(3);
num2.add(4);

num1 = num2;

num1=num2是将num1的地址值指向num2,而num1原先的对象会被垃圾回收。但是在这里我想告诉你的是集合之间的复制方法:
方法一:ArrayList<Integer> num2 = new ArrayList<Integer>(num1);//利用集合自带的构造方法
方法二:ArrayList<Integer> num2 =(ArrayList<Integer>) num1.clone();//利用克隆的方法进行赋值。

num1 = num2并不是赋值,而是指向,你定义的num1并不是一个ArrayList对象,而是一个指针,它只是指向了这个你后面创建的这个对象,当你执行num1 = num2时,只是将指针的指向你第二个创建的对象。

举个例子,有两条宠物狗,第一条你叫它小白,给它买了个项圈,第二条你叫它胖胖,也买了项圈,还买了宠物衣服。现在你发现胖胖比小白还白,所以你决定管胖胖叫小白,这之后你小白和胖胖这两个名字都是指第二条狗,而第一条狗因为名字被拿走,它就没有名字了。

二、java中for循环删除元素的问题(for循环遍历时,删除集合中符合条件的元素,容易删除不成功)

https://blog.csdn.net/answers1993ai/article/details/78436870

for(int i=0;i<list.size();i++){  
    if(list.get(i).contains("a")){  
        list.remove(i);  
        i--;  
    }  
}  
原文地址:https://www.cnblogs.com/liyanli-mu640065/p/9067043.html