【发布时间】:2013-06-07 20:38:53
【问题描述】:
我有一个大小为 nXm 的 2D 矩阵,其中每个单元格包含未知数量的 Integer 类型的值(因此我必须使用 List 才能动态添加内容,并且必须使用 2D 数组 nXm 因为数组易于访问和编写代码)。 请
- 在向我推荐任何其他数据结构之前请先在下面回答我的问题,然后讨论为什么我不应该这样做,并选择您认为会更好、更高效的方法:
如何为下面的变量分配内存?
ArrayList<Integer>[][] i2DArrayList;
我知道在某些时候我必须这样做。但是在此之前,我必须做一些我不记得知道的其他内存分配。你能在这件事上指导我吗?
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
i2DArrayList[i][j] = new ArrayList<Integer>();
}
}
我已经知道如何在一维中做到这一点:
ArrayList<Integer>[] i1DArrayList;
i1DArrayList = new ArrayList[n];
for (int i = 0; i < i1DArrayList.length; i++) {
i1DArrayList[i] = new ArrayList<Integer>();
}
【问题讨论】:
-
我想你想要一个
ArrayList<ArrayList<Integer>>。 -
不,就像我说的我对 ArrayList
[][] i2DArrayList 没问题 -
不幸的是you can't create array with generic type。我希望你最终会得到
ArrayList<ArrayList<Integer>>,因为它是最适合你的方法。 -
我编辑了我的问题@Pshemo:我已经知道如何在 1D 中做到这一点......
-
@Cgraphics 但这会导致类型安全问题。如果你想忽略它们,那好吧,这是你的选择。