簡體   English   中英

數據結構使所有元素處於特定位置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM