如何创建三维动态数组?

时间:2011-04-26 08:52:39

标签: java

我想创建3d动态数组。我该如何创建呢?

我正在收集数据表单数据库,我试图将这些数据存储在数组中,我不知道有多少数据c

6 个答案:

答案 0 :(得分:3)

一个数组一旦创建,就无法调整大小。因此,您必须反复创建新数组并使用arraylist复制您的值:

List<List<List<Integer>>> matrix3d = new ArrayList<List<List<Integer>>>();

使用它:

// create a matrix 2x3x4 matrix (a_111 ... a_234)

// the matrix first
List<List<List<Integer>>> matrix3d = new ArrayList<List<List<Integer>>>();

// add two 2d matrices
for (int i = 0; i < 2; i++) {
   subMatrix2d = new ArrayList<List<Integer>>();
   matrix3d.add(subMatrix2d);

   // add three 1d matrices
   for (int i = 0; i < 2; i++) {
       subMatrix1d = new ArrayList<Integer>(4); // initial value to clarify only!
       subMatrix2d.add(subMatrix1d);
   }
}


// set a_223 to value 4
matrix3d.get(1).get(1).set(2, 4);  // matrix/list indices are zero based

答案 1 :(得分:2)

有关具有基元的简单动态2D数组,请参阅this answer。你可以改进3D。

答案 2 :(得分:1)

为什么不实施Coodinate类:

public  class Coordinate<T> {
    final double x;
    final double y;
    final double z;
    T data;


    public Coordinate(double x, double y, double z, T data) {
        this.x = x;
        this.y = y;
        this.z = z;
        this.data = data;
    }
}

后,  List positions = new ArrayList();

因此,插入职位:

positions.add(新Coodinate(1.0,1.0,1.0));

可能,对于您想要做的事情,可以更快,更容易地开发和测试。

答案 3 :(得分:0)

ArrayList<ArrayList<ArrayList<MyObjectType>>> myThreeDimensionalVector = new ArrayList<ArrayList<ArrayList<MyObjectType>>>();

更严重的是,这是一个皮塔饼。你能说出你为什么要这样做,以便我们可以提出更好的方法吗?

答案 4 :(得分:0)

听起来你最好创建一个Object来保存你的数据(每行1个实例)并将每个实例添加到List(~1-dim数组)。

答案 5 :(得分:0)

那个数组看起来很奇怪, 如果我可以建议我的解决方案: 首先用两个变量定义一个类,调用该类AClass,然后使用hashmap(如果插入顺序不重要)将计数器保存为索引,将AClass的实例保存为值。 像这样:HashMap<Integer,AClass>。 如果插入顺序对您很重要,请使用linkedHashmap