在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;
}
答案 0 :(得分:4)
非常简单地说,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);
}
在这种情况下,括号不是绝对必要的。
答案 1 :(得分:0)
是的,内部元素(ArrayList<Pixel>
的实例)不会被颠倒。如果你想在结构内部递归地反转所有内容,你必须自己实现。