很简单地说,reverse()
不会通过数组列表传播超过一维。
假设您创建了一个ArrayList<ArrayList<Integer>>
(为了简化而不是像素)如下(这不是有效的java,只是一个概述):
ArrayList //called outer
ArrayList //called inner-1
Integer(11)
Integer(12)
ArrayList //called inner-2
Integer(21)
Integer(22)
你那么Collections.reverse()
外ArrayList
。
你会得到:
ArrayList //called outer
ArrayList //called inner-2
Integer(21)
Integer(22)
ArrayList //called inner-1
Integer(11)
Integer(12)
reverse()
没有考虑到ArrayList
contains 。ArrayLists
它将它们视为普通对象并颠倒它们的顺序而不触及它们的内容。否则,将导致不确定的、难以跟踪的行为和各种猪的飞行。
如果你想翻转所有内部,使用这个快速花絮:
for(ArrayList innerList: copy){ //named as per your existing code in the original post
Collections.reverse(innerList);
}
在这种情况下,括号不是绝对必要的。