繁体   English   中英

创建三维锯齿状数组以存储Java中大小可变的二维数组

[英]Creating a three dimensional jagged array to store two dimensional arrays of varying size in java

假设我有不到十个二维数组代表Java中的矩阵。 每个数组从0到6枚举。每个数组都比n * 2 ^ enumval大,其中n是第0个枚举数组中元素的数量,因此我的多维数组几乎是金字塔形状的,因此需要锯齿状三维数组。 是否可以创建锯齿状三维数组?

int[][] array0 = new int[2][2];
int[][] array1 = new int[4][4];
int[][] array2 = new int[8][8];
int[][] array3 = new int[16][16];
int[][][] arrayStorage = new int[][][];

我想用以下方法存储数组:arrayStorage [columnOfArray#] [rowOfArray#] [#]

是的,完全有可能在Java中创建一个锯齿状的数组。

这是一些示例语法:

   int[][] jagged = new int[3][];
   jagged[0] = new int[]{1, 2, 4};
   jagged[1] = new int[]{9, 17, 35, 80};
   jagged[2] = new int[]{100};

在这种情况下,我有一个锯齿状的数组,其中包含三行,但列的数量不确定。 长度从1到4不等。

Java 支持锯齿状数组。 您正在寻找一种3D数组的示例(使用“矩阵”的“列表”作为更相关的具体示例):

// an array of m*n (or jagged) 2D arrays.
int[][][] matrices = new int[2][][];

// A 2*2 matrix
int[][] matrix22 = new int[2][];
matrix22[0] = new int[] {1, 2};
matrix22[1] = new int[] {3, 4};

matrices[0] = matrix22;

// A 3*3 matrix
int[][] matrix33 = new int[3][];
matrix33[0] = new int[] {1, 2, 3};
matrix33[1] = new int[] {4, 5, 6};
matrix33[2] = new int[] {7, 8, 9};

matrices[1] = matrix33;

或者,打成一条声明:

int[][][] matrices2 = new int[][][] {
    new int[][] {
        new int[] {1, 2},
        new int[] {3, 4}
    },
    new int[][] {
        new int[] {1, 2, 3},
        new int[] {4, 5, 6},
        new int[] {7, 8, 9}
    }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM