繁体   English   中英

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

[英]what is the best way to create dynamic array of arrays of arrays

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

第一个是声明每个数组的最大可能大小int arr[][][] = new int[10000][10000][10000]; ,但就我而言,每个数组的大小取决于另一个数组的大小。 我的意思是每个数组都可能具有max数组的大小,如果我用这种方式声明我的数组数组,则它将占用大量内存。

方法是使用ArrayList 但是我以前从未使用过它,我也不知道声明ListArrayListArrays以及声明ListArrayListArrayListArraysListArrays 另外,我不确定是否应该使用它,因为ListArray包含对象作为元素,并且如果我有一个像[10000][100][20]这样的数组,那么我的内存使用情况和其他PC会发生什么情况资源?

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

伙计们,我真的需要这方面的帮助,因为我已经竭尽全力尝试使用最少的pc资源来解决此问题。

任何帮助表示赞赏!

免责声明:首先,这可能是一个糟糕的设计,因为非常罕见的列表必须嵌套得很深,或者完全嵌套。 您可能希望将其展平或使用SetMap 我的猜测是Map因为您会从第三列表中得到什么有意义的信息? 好吧,如果“ 3rd”有意义,那么map.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++);
        }
    }
}

更明确地说-这样做:

import java.awt.Point;

Point通常用于图形情况,我怀疑您只需要一对整数。 您可以使用Apache的不可变点类,也可以滚动自己的 ,如果要进行后者,请记住实现hashCode()

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM