2013-10-18 44 views
1

我想聲明一個2D數組,每個座標[x] [y]將返回一個堆棧。 所以,我開始這使用堆棧初始化二維數組 - Java

private Stack<Balloon>[][] location; 

我試着爲它創建內存空間。我想這一點,但我失敗了

location = new Stack<Balloon>()[width][height]; 

我應該這樣做

for(int i=0; i < width; i++){ 
    for(int j=0; j < height; j++){ 
     location[i][j] = new Stack<Balloon>(); 
    } 
} 

還是有一種特殊的方式來做到這一點?

回答

2

嗯,根據您的描述,也許這可能會更好?

Map<Point, Stack<Balloon>> map = new HashMap<Point, Stack<Balloon>>(); 

Point具有x和y座標已經,並且是標準庫的一部分。

這種方式,您可以通過使用查詢特定的堆棧:

int x = 1; 
int y = 1; 
Point point = new Point(x, y); 
Stack<Balloon> balloons = map.get(point); 
+0

但是,當我嘗試輸入一個氣球,似乎很煩人 –

+0

如果我想插入一個氣球,我將不得不balloon.getPoint(點).push(氣球)? Ahh看起來不錯 –

+0

也許你可以編寫'insert()'和'remove()'例程來完成幕後所有令人討厭的語法:p – yamafontes

0
location = new Stack[width][height]; // remove generic 
+0

這會得到一個類型安全警告 –

+0

正如我在更新的java版本中所知道的那樣很好。 –

0
location = new Stack<Balloon>()[width][height]; // Invalid 
location = new Stack<Balloon>[width][height]; // Valid! 

你應該再通過,如果你不希望這些值是空循環。

+0

我收到「無法創建通用數組」的錯誤 –