我有一类对象。理想情况下,我想将它们全部放入五个单独的集合中。然后,我想将所有这五个集合添加到一个 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 中,如上所述。但是,我不确定这是否可能——我的实验到目前为止还没有奏效。