Grid
特定の高さと幅の正方形があります。クラスのメンバーが含まれていますItem
。すべてItem
に特定のPosition
. 一定の時間内にすべてのアイテムを特定の位置に取得できるようにしたいのですが、償却された一定の時間でグリッドにアイテムを配置できるようにしたいと考えています。
使用された位置 (少なくとも 1 つの項目を持つ位置) の量に比例するメモリ量を使用しながら、どの (Java) 構造がこれを行うことができますか?
Grid
特定の高さと幅の正方形があります。クラスのメンバーが含まれていますItem
。すべてItem
に特定のPosition
. 一定の時間内にすべてのアイテムを特定の位置に取得できるようにしたいのですが、償却された一定の時間でグリッドにアイテムを配置できるようにしたいと考えています。
使用された位置 (少なくとも 1 つの項目を持つ位置) の量に比例するメモリ量を使用しながら、どの (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 配列の場合、2 倍にするのは少し多いかもしれません。ただし、可能な成長の種類によって異なります)。