我想创建3d动态数组。我该如何创建呢?
我正在收集数据表单数据库,我试图将这些数据存储在数组中,我不知道有多少数据c
答案 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