簡體   English   中英

如何在Java中創建一個不規則形狀的二維數組

[英]How to create an irregular shaped two dimensional array in Java

我需要為紙牌游戲創建一個二維數組,如下圖所示。 該數組共有 5 行,前兩行每行包含 5 列,底部三行每行包含三列。 最好的方法是創建一個典型的 5x5 方形數組並將 NULL 值放在 6 個空單元格中嗎? 或者是否有更復雜的方法來處理形狀奇特的二維數組?

Square[][] Board = new Square[5][5];
board[5][5] = NULL;

陣列形狀

除了根本不使用數組之外,沒有更好的方法。 在任何情況下,您都希望使用訪問器函數以某種統一的方式處理數組邊界和空槽,而不是依賴於數據結構的每個用戶來了解邊界和 NULL 條目的可能性。

最好的方法是創建一個典型的 5x5 方形數組並將 NULL 值放在 6 個空單元格中嗎?

是的,我認為這將是最直觀的解決方案。 請記住,您需要區分空呼叫和空卡單元格,因此不能對兩者都使用 null。 這應該不是問題:常量實例Square.EMPTY會有所幫助。

二維數組是這類游戲最好的數據結構。 如果你能想出一種方法來說明邊界是什么以及如何很好地迭代板,你會沒事的。

或者是否有更復雜的方法來處理形狀奇特的二維數組?

我想不出任何。 你可以有

Square[][] board = new Square[MAX][];

board[2] = new Square[MAX];
board[3] = new Square[NOT_MAX];

但是對於長度為NOT_MAX數組,您還需要存儲一個偏移量。 它使事情復雜化,並假設模式始終如您所展示的那樣簡單。 對於中間有間隙的模式,它不起作用。

您可以像這樣創建數組:

Square[][] board = new Square[5][];
board[0] = new Square[5];
board[1] = new Square[5];
board[2] = new Square[3];
board[3] = new Square[3];
board[4] = new Square[3];

默認情況下,如果尚未設置值,則 Java 數組包含用戶定義類型的null 您應該能夠根據需要設置其他條目。

暫無
暫無

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

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