什么是创建数组数组动态数组的最佳方法

时间:2013-03-01 15:39:08

标签: java arrays dynamic hyperlink

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

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

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

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

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

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:1)

免责声明:这可能是一个糟糕的设计,因为它非常罕见的列表必须嵌套这么深,或者根本不需要嵌套。您可能希望将其展平或使用SetMap。我的猜测是Map,因为你从第三个列表中获得了什么有意义的信息?好吧,如果“第三”是有意义的,那么map.add(3, myInt)是一种更好的方式来访问它。

尽管如此,语法非常精细,所以这是一个有效的代码示例。

  

但我以前从未使用它,我不知道声明ListArray的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++);
        }
    }
}

答案 1 :(得分:0)

更明确 - 做到这一点:

import java.awt.Point;

Point通常用于图形情况,我怀疑你只需要一对整数。您可以use Apache's immutable point class或自己动手,如果您执行后者,请记住实施hashCode()

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

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