存储在ArrayList中的数组的反向顺序

时间:2015-09-02 07:59:11

标签: java arrays arraylist reverse

我正在使用ProcessingIGeo库,我有ArrayListIVec[]数组:

ArrayList<IVec []> v = new ArrayList<IVec[]>(); 

对于ArrayList I的每个I,都有一组IVec []数组,表示曲线控制点的坐标。我需要反转IVec []控制点的顺序,保持ArrayList的相同顺序(我试图反转曲线缝逆转控制点顺序并保持曲线的原始顺序)但我无法理解这该怎么做。 任何人都可以帮助我吗?

5 个答案:

答案 0 :(得分:1)

我不会为您提供完整的解决方案,但会引导您完成它:

  • 迭代数组列表v
  • 表示其中的每个项目(IVec[]),

答案 1 :(得分:1)

您可以使用Collections.reverse

您还可以使用堆栈数据结构。您可以通过push将元素迭代到堆栈中来迭代您想要反转的集合。然后,当你真正想要使用元素时,你pop堆栈中的每个元素,这将允许你以相反的顺序迭代集合。

答案 2 :(得分:0)

试试这个;

  • 创建一个获取并返回数组的Helper方法/函数。
  • 在Helper方法中,使用Collections.reverse
  • 返回反向数组。
  • 在循环中调用此辅助方法,如下所示:
for(int i = 0; i < OutArray.length; I++)
{ // Here get the inner Array and pass it to Helper method. 
// Add the return array to newArray List 
}
return newArrayList.

答案 3 :(得分:0)

此解决方案正在运行:

for (int i=0; i<v.size (); i++) {  
  IVec [] vert=v.get(i); 
  for (int j=0; j<vert.length/2; j++) {
    IVec temp = vert[j];
    vert[j]=vert[vert.length -1 - j];
    vert[vert.length - 1 - j] = temp;
  }
}

答案 4 :(得分:0)

这应该有效(不是最有效的方式,但很容易理解):

public static <T> void reverseElements(ArrayList<T[]> list) {   

    ArrayList<T> tempList = new ArrayList<T>();
    for(T[] arr : list) {

        tempList.clear();
        for(T t : arr)
            tempList.add(t);

        Collections.reverse(tempList);
        tempList.toArray(arr);
        arr = tempList.toArray(arr);
    }       
}