[英]Data Structure to get all elements at certain position
我有一個具有一定高度和寬度的正方形Grid
。 它包含Item
類的成員。 每個Item
都有特定的Position
。 我希望能夠在恆定時間內將所有項目放置在某個位置,並且希望能夠在攤銷后的恆定時間內將項目放置在網格上。
當使用與使用的位置(上面至少包含一項的位置)的數量成比例的內存量時,什么(Java)結構可以做到這一點?
如果您的網格大小固定,我將使用數組。
Item[][] itemArray = new Item[3][3];
itemArray[0][0] = new Item();
System.out.println(itemArray[0][0]);
我會將其包裝到Grid
類中
public final class Grid {
private Item[][] grid;
public Grid(int width, int height) {
grid = new Item[width][height];
}
public void setItemAt(Position position, Item item) {
int x = position.getX();
int y = position.getY();
grid[x][y] = item;
}
public Item getItemAt(Position position) {
int x = position.getX();
int y = position.getY();
return grid[x][y];
}
}
上面的用戶說的很對,您可以在內部使用數組。 當然,它應該是List<Item>[][]
。 無論您使用ArrayList
還是LinkedList
,添加都將攤銷固定時間。 盡管我建議您使用LinkedList
,但是您的Grid
很可能是稀疏填充的( ArrayList
總是以幾個已經分配的空格開始)。
如果Grid
需要能夠增長,請使用ArrayList
的相同技巧:跟蹤當前的寬度/高度,如果需要更多,只需將可用空間乘以合適的值(對於2D數組,可能需要加倍很多,但這取決於可能的增長類型)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.