存储对象的二维网格

Storing 2D Grid of objects

我正在创建一个游戏,其中有 Tile 个对象的二维网格。这些 Tile 对象中的每一个都有许多包含对象的实例变量,例如 TowerView.

我目前正在将此网格实现为从 Point (awt) 到 Tile 对象的 HashMap。这是实现网格的好方法吗?这允许我不映射某些还没有 Tile 对象的点。

备选方案是 Tile[][],但即使不存在图块,也需要为整个网格预分配足够的内存,对吗?

这两者也都存储在堆上,但我想知道 performance/space 这两个实现之间的差异。

两种解决方案(HashMap<Point, Tile>new Tile[200][200])都可以。我想我会选择更简单的解决方案(数组),除非你有充分的理由认为内存是个问题。你是正确的,new Tile[200][200] 为整个网格分配内存,即使没有 Tile。请记住 HashMap 需要大量内存,因为每个 key/value 对都包含在一个 Entry 对象中,因此地图解决方案可能不会节省内存,除非网格是稀疏的。