ArrayList中存放引用类型时,存放的是一个引用,因此在放入ArrayList之后再进行改动会影响到ArrayList中的值,看下面一个例子:
import java.util.ArrayList; public class Student implements Cloneable{ private int age; private String name; public static void main(String[] args) { Array<b style="color:transparent">本文来源gao@!dai!ma.com搞$$代^@码!网!</b>List<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)来进行复制。