在JAVA中存储2D数组的数据结构

在JAVA中存储2D数组的数据结构,java,arrays,multidimensional-array,arraylist,Java,Arrays,Multidimensional Array,Arraylist,我正在寻找一个数据结构来存储二维整数数组。 列表是正确的数据结构还是应该使用另一个 有人能给我一个关于如何创建这样的数据结构和如何添加2d数组的简短示例吗 编辑:我想要一个数据结构,在其中存储int[11][7]数组。 例如,十个int[11][7]数组。如果大小固定,那么使用int[][]或者列表如果需要在数据结构中存储大量int[][]数组,我可能会建议您将int[][数组存储在表示数据所包含内容的对象中,然后将这些对象存储在数组列表中 例如,这里有一个简单的对象包装器,用于int[][]数

我正在寻找一个数据结构来存储二维整数数组。 列表是正确的数据结构还是应该使用另一个

有人能给我一个关于如何创建这样的数据结构和如何添加2d数组的简短示例吗

编辑:我想要一个数据结构,在其中存储int[11][7]数组。
例如,十个int[11][7]数组。

如果大小固定,那么使用
int[][]
或者
列表
如果需要在数据结构中存储大量
int[][]
数组,我可能会建议您将
int[][
数组存储在表示数据所包含内容的
对象中,然后将这些
对象
存储在
数组列表

例如,这里有一个简单的
对象
包装器,用于
int[][]
数组

public class 2DArray {
    int[][] array;
    public 2DArray(int[][] initialArray){
        array = initialArray;
    }
}
下面是如何使用它们,并将它们存储在
ArrayList

// create the list
ArrayList<2DArray> myList = new ArrayList<2DArray>();
// add the 2D arrays to the list
myList.add(new 2DArray(myArray1));
myList.add(new 2DArray(myArray2));
myList.add(new 2DArray(myArray3));
//创建列表
ArrayList myList=新的ArrayList();
//将二维阵列添加到列表中
添加(新的2DArray(myArray1));
添加(新的2DArray(myArray2));
添加(新的2DArray(myArray3));

我提出建议的原因是,您的
int[][]
数组对您一定有一定的意义。通过将其存储在
对象
包装器类中,您可以赋予它意义。例如,如果值是坐标,则调用类
Coordinates
,而不是
2DArray
。因此,您可以创建一个坐标
列表
,它比
int[][][]

更有意义数组不仅仅是关于如何存储信息的概念,它也是如何存储数据的实现。因此,如果使用数组,则已经选择了数据结构

如果希望在数据结构中存储数据,则需要关注数据结构的使用方式,考虑如何检索数据和存储数据,执行每个操作的频率,以及处理的数据量。然后您知道哪些方法必须是最佳的,并且知道数据是否可以驻留在内存中,等等

仅举一个例子说明有多少种方法可以解决这一问题:

  • 可以将数组展平为一维数组,并使用x*num_columns+y作为索引
  • 您可以创建一个包含该对的对象,并将该数组放入映射中
  • 可以使用包含链接列表的链接列表
  • 可以使用包含树的树
  • 可以使用包含树的列表
  • 您可以对该对创建一个偏序,然后将所有元素放在一棵树中

  • 所有这些解决方案在很大程度上取决于哪些操作更需要优化。有时快速更新数据结构更为重要,有时则不然。决定因素实际上是程序的其余部分。

    因此您希望存储一个2D数组集合:如果集合大小固定,请添加另一个维度:

    int[][][] arrColl
    
    如果集合大小可变,请使用您最喜欢的
    集合实现(ArrayList、LinkedList等):

    Collection arrColl
    
    根据您的编辑:

    List
    是您所需要的-这将允许您添加任意数量的2D
    Integer
    数组。请注意,这将涉及装箱和拆箱-如果可能,应避免这种情况


    如果它足够(如果您事先知道需要多少2D int数组),您甚至可以使用
    int[][]
    -一个3D int数组-这不涉及装箱/拆箱。

    您可以使用List,或者。。。int[][]呢?您对数据结构有什么要求?2D数组本身就是一个数据结构,那么您希望将其包装成什么?为什么?很多数据结构都会包含2D数组,但您还有哪些其他要求是更重要的细节。2D数组的大小是固定的。它是int[11][7]。对不起,我遗漏了需要数组的内容。qou可以使用列表或整数[]。谢谢。我会这样尝试,如果不能让它工作(因为我以前从未使用过列表),我会尝试int[][],因为它更容易让我理解。再次感谢!试一试——
    ArrayLists
    非常简单——只要看看Java文档中的方法列表就可以了。所有数组命令都有一个等价的命令-例如,您不调用
    array[0]
    ,而是调用
    list.get(0)
    Collection<int[][]> arrColl