ArrayList中存放引用类型时,存放的是一个引用,因此在放入ArrayList之后再进行改动会影响到ArrayList中的值,看下面一个例子:
import java.util.ArrayList;
public class Student implements Cloneable{
private int age;
private String name;
public static void main(String[] args) {
ArrayList<Student> students = new ArrayList<Student>();
Student st = new Student();
st.age = 10;
st.name = "marco";
students.add(st);
st.age = 20; //修改age值
System.out.println(students.get(0).age); //输出为20
}
}
同样,如果ArrayList中存放的也是ArrayList类型,如ArrayList<ArrayList<Integer>>
,对里面ArrayList的修改同样会影响到外层的ArrayList,如果想不受到影响可以在放入ArrayList时进行clone操作,对于ArrayList来说可以使用new ArrayList<ArrayList<Integer>>(list)
来进行复制。