如何反转二维java数组?

时间:2014-05-21 13:15:49

标签: java arrays reverse

我正在编写音乐演示的java代码 我有一个java数组:

int[][] a = {{1,2,3,},{4,5,6},{7,8,9},{10,11,12};

我想要反转这个数组来获得这个形状:

int[][] b = {{3,2,1},{6,5,4},{9,8,7},{12,11,10}}; 

请建议我一些简单的解决方案。

4 个答案:

答案 0 :(得分:0)

使用Collections.reverse来反转列表中元素的顺序。当您需要反转外部数组中的每个数组时,您需要使用for循环遍历内部数组。

注意:为此,您需要使用ArrayList而不是数组。您可以使用Arrays.asList(array)将数组转换为ArrayList。

在实践中:

List<Integer> list = Arrays.asList(a); //Where a is your original array
for (List<Integer> sublist : list)
  Collections.reverse(sublist);

现在列表包含您的反向子列表。

答案 1 :(得分:0)

如果你真的需要double[][]作为一种类型,请加入Ad Fundum的答案,试试这个:

double[] reverse(double[] a)
{
List<Integer> list = Arrays.asList(a); //Where a is your original array
for (List<Integer> sublist : list)
  Collections.reverse(sublist);
return list.toArray(new Double[a.length]);
}

for(int i=0; i<a.length; i++)
   b[i] = reverse(a[i]);

答案 2 :(得分:0)

试试这个:

int[][] a = {{1,2,3,},{4,5,6},{7,8,9},{10,11,12}};
int[][] b = new int[a.length][];

for(int i = 0; i < a.length; i++) {
    for(int j = 0; j < a[i].length; j++) {
        b[i][j] = a[i][a[i].length - (j + 1)];
    }
}

答案 3 :(得分:0)

如果您不想使用Collections.reverse(),请按以下步骤操作:

    int[][] a = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
    int[][] ar = new int[a.length][];
    int len, index;
    for (int i=0; i < a.length; i++) {
        len = a[i].length;
        ar[i] = new int[len];
        index = len-1;
        for (int j=0; j < len; j++) {
            ar[i][j] = a[i][index];
            index--;
        }
    }
    System.out.println(Arrays.deepToString(a));
    System.out.println(Arrays.deepToString(ar));