我有一類對象。理想情況下,我想將它們全部分成五組。然後,我想將所有這五個集合添加到一個HashMap中,併爲它們分配一個唯一的標識符。搜索包含這些對象的集合的HashMap
最後,我希望能夠搜索HashMap不是爲了集合,而是爲集合中包含的對象。這可能嗎?我查閱了有關HashMaps的儘可能多的信息,但似乎無法找到這樣做的方法。如果我不能,任何人都有什麼好的選擇?
編輯 - 示例代碼:
public class Cell{
private int x;
private int y;
public Example(int x, int y) {
this.x= x;
this.y= y;
}
}
然後,使用的MouseListener我發現這裏的網格上用戶點擊。我通過調用一個方法來確定下一艘船將被放置多長時間,從而確定他們放置了多少艘船(正在模擬戰艦遊戲)。然後我做到這一點:
for (int i = 0; i < currentShipLength; i++)
playerGridLogic.addCellsWithShips(new Cell(x, y+ i));
numberOfPlayerShipsPlaced++;
最後,一旦所有的船舶放置,我想將它們添加到HashMap。目前,我將所有的船隻都加入到一個大集合中。當電腦點擊我的網格單元,以下規則執行:
if (playerGridLogic.getCellsWithShips().contains(attackedCell)) {
playerGrid.getCellArray()[xPos][yPos].setBackground(Color.ORANGE);
}
else {
playerGrid.getCellArray()[xPos][yPos].setBackground(Color.MAGENTA);
}
雖然這所有的作品完美,它只是告訴我船被擊中。它並不告訴我哪一個,我想知道哪一個,以便在該船被銷燬時向用戶輸出信息。
我認爲最簡單的方法是創建五個集合而不是一個,然後將它們添加到HashMap中,如上所述。但是,我不確定這是否可行 - 迄今爲止,我的實驗還沒有奏效。
你在「五套獨立」中意味着什麼?什麼樣的套?你在談論EntrySet嗎?你可以發佈代碼示例嗎? – Omid 2013-05-02 08:45:42
HashSets理想情況下 – 2013-05-02 08:47:24
轉過來不是更容易:不是保留「船與細胞」列表,而是保留一個船舶列表,知道他們的細胞。然後迭代船隻,並讓它們返回,如果他們已被擊中。 – Fildor 2013-05-02 08:58:48