Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 存储在ArrayList中的数组的相反顺序_Java_Arrays_Arraylist_Reverse - Fatal编程技术网

Java 存储在ArrayList中的数组的相反顺序

Java 存储在ArrayList中的数组的相反顺序,java,arrays,arraylist,reverse,Java,Arrays,Arraylist,Reverse,我正在使用处理和IGeo库,我有一个IVec[]数组的ArrayList: ArrayList<IVec []> v = new ArrayList<IVec[]>(); ArrayList v=new ArrayList(); 对于ArrayList的每个I,I都有一组表示曲线控制点坐标的IVec[]数组。我需要反转IVec[]控制点的顺序,保持与ArrayList相同的顺序(我正在尝试反转曲线接缝反转控制点顺序并保持曲线的原始顺序),但我不知道如何执行此操作。

我正在使用
处理
IGeo
库,我有一个
IVec[]
数组的
ArrayList

ArrayList<IVec []> v = new ArrayList<IVec[]>(); 
ArrayList v=new ArrayList();
对于ArrayList的每个
I
,I都有一组表示曲线控制点坐标的
IVec[]
数组。我需要反转
IVec[]
控制点的顺序,保持与ArrayList相同的顺序(我正在尝试反转曲线接缝反转控制点顺序并保持曲线的原始顺序),但我不知道如何执行此操作。
有人能帮我吗?

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

  • 迭代数组列表
    v
  • 对于其中的每个项目(
    IVec[]
    ),
    • 将数组转换为集合(例如使用)
    • 用于反转列表中的项目
    • 将其转换回数组
您可以使用

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

  • 创建接受并返回数组的帮助器方法/函数
  • 在Helper方法中,使用Collections.reverse
  • 返回反向数组
  • 在循环内调用此帮助器方法,如下所示:
for(int i=0;i
此解决方案正在运行:

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;
  }
}
for(int i=0;i这应该有效(不是最有效的方法,但很容易理解):

publicstaticvoidreverseeelements(ArrayList列表){
ArrayList tempList=新的ArrayList();
对于(T[]arr:列表){
圣殿骑士;
对于(T:arr)
圣殿骑士。加(t);
收藏。反面(圣殿骑士);
圣殿骑士托雷(arr);
arr=圣堂武士toArray(arr);
}       
}

当我尝试使用Arrays.AsList时,我得到一个错误,函数AsList(IVec[])不存在,我认为与IVec[]相关属性,但不确定。我正在尝试迭代ArrayList以使用for循环手动更改索引。@liuzm它是
asList
,带有小a。感谢您的帮助!我已更正了错误,但现在无法从列表转换到列表。这篇文章应该详细介绍解决方案,而不仅仅是发布代码,并希望用户能够执行盲拷贝粘贴,获得更多理解。
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;
  }
}
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);
    }       
}