想象一下,如果你愿意的话,用1x1x1砖块制成的10x10x10立方体.每个砖必须可以通过x,y,z坐标访问.对于每块砖,我还需要存储一个拥有该"砖块"的人名单.
由于效率是绝对必要的,我想出了以下想法 - 一个3d矢量数组.注意 - 我创建了一个存储名称和其他信息的类(称为人)
//declaration
protected Vector<person>[][][] position;
Run Code Online (Sandbox Code Playgroud)
我想我必须将内存分配给指针位置.我试过这个
position = new Vector<person>[10][10][10];
Run Code Online (Sandbox Code Playgroud)
但我得到一个错误'无法创建一个通用的Vector数组'我只熟悉C++和Java对我来说是新的.我理解java不喜欢用泛型类型声明数组?有谁知道如何解决这个问题?
干杯
没有必要复杂化那么多东西!你知道数组的大小(10:10:10),所以没有必要为砖块找到矢量或其他东西.尝试使用对象数组:
Class Brick {
public Brick(int x, int y, int z){
this.x=x;
this.y=y;
this.z=z;
owners = new ArrayList <String> ();
}
List<String> owners;
int x, y, z; //every brick "knows" its position - you might not need it
}
创建数组的代码:
Public Class Main {
.....
Brick Cube[][][] = new Brick[10][10][10];
for (int x=0; x < 10; x++)
for(int y=0; y < 10; y++)
for(int z=0; z < 10; z++)
{
Cube[x][y][z] = new Brick(x, y, z);
}
//adding an owner to a brick:
Cube[0][0][0].owners.add("Owner");
.....
}
记住OOP - 它让事情变得更容易!
TODO:添加getter/setter
| 归档时间: |
|
| 查看次数: |
4242 次 |
| 最近记录: |