在java中,如果使用Collections.reverse(someArrayList)
反转2d ArrayList,会发生什么?只有外部尺寸会反转吗?
这是我的代码:
public ArrayList<ArrayList<Pixel>> getReversedArrayList(ArrayList<ArrayList<Pixel>> original)
{
ArrayList<ArrayList<Pixel>> copy = new ArrayList<ArrayList<Pixel>>(original);
Collections.reverse(copy);
return copy;
}
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
包含ArrayLists
。它将它们视为正常对象,并在不接触其内容的情况下反转它们的顺序。否则,将导致不明确、难以追踪的行为和各种各样的猪飞。
如果你想翻转所有内部,请使用以下快速花絮:
for(ArrayList innerList: copy){ //named as per your existing code in the original post
Collections.reverse(innerList);
}
在这种情况下,括号并不是绝对必要的。
是的,内部元素(ArrayList<Pixel>
的实例)不会反转。如果你想在结构的深处递归地反转所有东西,你必须自己实现。