Java泛型类型向量的多维数组
想象一下,如果你愿意的话,一个由1x1x1块砖组成的10x10x10立方体。每个砖块必须可以通过x、y、z坐标访问。对于每一块砖,我还需要存储一个拥有该“砖”的人的名单
由于效率是绝对必要的,我想出了以下想法——一个3d矢量阵列。 注意——我已经创建了一个类,它存储了一个名字和其他信息(称为person)
//declaration
protected Vector<person>[][][] position;
我想我必须为指针位置分配内存。我试过这个
position = new Vector<person>[10][10][10];
但是,我不能创建一个向量的通用数组,我只熟悉C++,java对我来说是新的。我知道java不喜欢用泛型类型声明数组?有人知道我该怎么解决这个问题吗
干杯
# 1 楼答案
在java中,您试图做的是不可能的,因为没有操作符重载(如在C++中)。简而言之,Java中的[]运算符仅为数组定义,不能重载。因此,访问Vector/ArrayList中元素的唯一方法是通过
get()
方法(或者通过Iterator
或结合其他方法,但您可以看到图片)。类似地,您不能用这种方式定义多维ArrayList。你应该做的是ArrayList<ArrayList<ArrayList<Person>>> people = new ArrayList<ArrayList<ArrayList<Person>>>()
然后用嵌套循环或任何你想要的方式初始化所有内部数组。 它看起来有点难看,而且由于ArrayList/Vector是一个动态集合,例如在第一个数组中添加新元素也需要初始化两个嵌套数组。因此,在设计方面,最好为该类编写某种形式的包装器,以便隔离该类中的逻辑Java中ArrayList和Vector的区别在于Vector是同步的(因此速度较慢),并且是默认的增长模式(Vector的大小是它的两倍,而ArrayList增长了50%)。否则,它们在功能和操作复杂性上几乎完全相同
# 2 楼答案
我也同意Ed.C的客观回答,但这似乎是可行的:
你跳过右边的钻石