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)来进行复制。
本文详细探讨了在Java中使用ArrayList存储引用类型时的行为特点,特别是当这些引用被修改时如何影响ArrayList的内容,并介绍了如何通过克隆来避免这种影响。
686

被折叠的 条评论
为什么被折叠?



