簡體   English   中英

引用數組中的位置而不是數組中的數據。 (Java)

[英]Referencing a Location in an Array rather than the Data within it. (Java)

我正在編寫一個項目,要求我對由Unit組成的網格狀結構使用圖遍歷算法。 我正在創建網格,以便網格的每個單元都引用其每個鄰居:

class Unit {
    boolean type, visited;
    Unit up, left, down, right;
    Unit(Unit u, Unit l, Unit d, Unit r) {
        up = u;
        left = l;
        down = d;
        right = r;
    }
}

我通過將新的Unit對象添加到與鄰居相鄰的每個位置(以對網格中其他位置的引用的形式)來創建Unit的網格:

Unit[][] grid = new Unit[height][width];

for (int i = 0; i < height; ++i) {
    for (int j = 0; j < width; ++j) {
        grid[i][j] = new Unit(
            i == 0 ? null : grid[i - 1][j],
            j == 0 ? null : grid[i][j - 1],
            i == height - 1 ? null : grid[i + 1][j],
            j == width  - 1 ? null : grid[i][j + 1]
        );
    }
}

不幸的是,每當一些網格Unit被創建時,它們的鄰居都是null因此它們沒有正確的引用。 為了解決這個問題,我只需要重新運行整個算法,以使其充滿每個網格元素,但這似乎是一個非常低效且丑陋的解決方案。

我想做的是將Unit對象保持為網格的“動態”索引,因此,如果某個位置被更新,則相應Unit的鄰居引用也將被更新。 網格表示這是一種承諾,即如果位置(i, j)被填充,則相鄰Unit將會擁有更新的信息。


謝謝任何可以幫助我解決這個問題的人!

PS我意識到我可以將索引存儲到鄰居的Unit類中的網格中,但這將限制我在此示例中擁有的特定網格,因此有必要每次調用都獲得該項更新。 我可能不想像在這里一樣將其存儲在二維數組中,所以我想要一個可通用的系統。

當使用構造函數創建第一個Unit ,沒有相鄰的Unit,因此您的引用將引用null。 您可以改為檢查相鄰單元格是否包含空引用(請注意相鄰單元格的i和j值),如果是,則創建一個new Unit()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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