记录一下遇到的小坑
//初始化 Listlist = new ArrayList<>(); list.add(1); list.add(2); list.add(3); list.add(4); List a = new ArrayList<>(); //赋值 a = list; Collections.reverse(a); //输出结果 for(int i : list){ System.out.print(i); } System.out.println(""); for(int i : a){ System.out.print(i); }
输出结果:
4321
4321
在debug时发现,list和a的地址引用是相同的,实际上List在进行赋值时是将地址进行赋值,由于上述代码中list,a两个个List的地址引用是一样的,因此在利用Collections.reverse()进行反转列表时,list,a两个个列表会被同时进行反转,因此输出的是一样的结果
解决这个问题的方式就是在赋值时,利用for循环进行赋值。
//将上述a = list修改为for循环进行赋值
for(int num : list){
a.add(num);
}
此时利用Collections.reverse()进行反转则会输出正确的结果。



