首先,我们先来看一个错误事例:
ArrayList<String> arrayList = new ArrayList<>();
ArrayList<String> arrayList1 = new ArrayList<>();
arrayList1 = arrayList;
但这种方法只是将arrayList的地址赋值给arrayList1, 也就是说两个arraylist相当于一个arraylist。因为他们都指向同一个地址。那么原先的ArrayList的原先对象会被垃圾回收机制回收掉。
遇到这种问题该怎么办呢?
方法一:利用集合自带的构造方法
ArrayList<String> arrayList = new ArrayList<>();
ArrayList<String> arrayList1 = new ArrayList<>(arrayList);
方法二:利用克隆的方法
ArrayList<String> arrayList = new ArrayList<>();
ArrayList<String> arrayList1 = (ArrayList)arrayList.clone();
方法三:遍历,元素复制法
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("java");
arrayList.add("nb");
for(int i=0;i<arrayList.size();i++){
arrayList1.add(arrayList.get(i));
}
方法四:方法调用copy法:
ArrayList<String> arrayList = new ArrayList<>();
ArrayList<String>arrayList1 = new ArrayList<>();
arrayList1.addAll(arrayList);
最后比较一下
System.out.println(arrayList.equals(arrayList1));
//输出为 true