1

我有问题。我需要创建一个数组数组。我已经阅读了一些关于在 Java 中创建动态数组的文章,但我不确定我应该选择哪种方式。

第一个是声明每个数组的最大可能大小int arr[][][] = new int[10000][10000][10000];,但在我的情况下,每个数组的大小取决于另一个数组的大小。我的意思是每个数组可能有一个最大数组的大小,如果我用这种方式声明我的数组数组,它​​应该占用大量内存大小。

方法是使用ArrayList. 但是我以前从未使用过它,而且我不知道声明ListArrayofListArrays以及ListArrayofListArrays的语法ListArrays。另外,我不确定是否应该使用它,因为ListArray包含对象作为元素,如果我有一个数组,比如[10000][100][20]我的内存使用和其他 pc 资源会发生什么?..

第三个问题是,在最好的情况下,我不希望对象或任何其他数据类型变量作为数组元素,而是链接到另一个数组元素的其他元素(我的意思是arr[z][x][y] = @arrOfStr[i])。我从未在 Java 中使用过链接,我什至不知道是否可以将链接用作数组元素以及我应该如何声明我的数组。

所以伙计们,我真的需要帮助,因为我已经打破了我的大脑,试图用最少的电脑资源来解决这个问题。

任何帮助表示赞赏!

4

2 回答 2

1

免责声明:这可能是一个糟糕的设计,因为很少有列表必须嵌套这么深,或者根本嵌套。您可能希望将其展平或使用Setor Map。我的猜测是Map,您从第三个列表中的内容中获得了哪些有意义的信息?好吧,如果“3rd”是有意义的,那么 amap.add(3, myInt)是访问它的更好方法。

尽管如此,语法还是很微妙的,所以这里有一个工作代码示例。

但是我以前从未使用过它,而且我不知道声明 ListArrays 的 ListArray 以及 ListArrays 的 ListArrays 的 ListArray 的语法。

所以有你的问题。

List<Integer> array1 = new ArrayList<>();  //java 7 only
List<List<Integer>> array2 = new ArrayList<>(); 
array2.add(array1);
// ...

等等。

创建 10x10x10 列表并填充一些数字的示例代码:

List<List<List<Integer>>> list = new ArrayList<>();
int n = 0;
for(int i = 0; i < 10; i++) {
    List<List<Integer>> list2 = new ArrayList<>();
    list.add(list2);
    for(int j = 0; j < 10; j++) {
    List<Integer> list3 = new ArrayList();
    list2.add(list3);
        for(int k = 0; k < 10; k++) {
            list3.add(n++);
        }
    }
}
于 2013-03-01T15:41:52.673 回答
0

更明确地说 - 这样做:

import java.awt.Point;

Point通常用于图形案例,我怀疑您只需要一对整数。您可以使用 Apache 的不可变点类或滚动您自己的,如果您使用后者记得实现hashCode().

Map<Point, Integer> map = new Hashmap<>();

在那里,只有一张地图,没有清单。我强烈怀疑您的代码中根本没有理由需要一个列表,而您只想通过它们的坐标检索事物。

于 2013-03-02T14:33:01.693 回答