存储对象的二维网格
Storing 2D Grid of objects
我正在创建一个游戏,其中有 Tile
个对象的二维网格。这些 Tile
对象中的每一个都有许多包含对象的实例变量,例如 Tower
和 View
.
我目前正在将此网格实现为从 Point
(awt) 到 Tile
对象的 HashMap。这是实现网格的好方法吗?这允许我不映射某些还没有 Tile
对象的点。
备选方案是 Tile[][]
,但即使不存在图块,也需要为整个网格预分配足够的内存,对吗?
这两者也都存储在堆上,但我想知道 performance/space 这两个实现之间的差异。
两种解决方案(HashMap<Point, Tile>
和 new Tile[200][200]
)都可以。我想我会选择更简单的解决方案(数组),除非你有充分的理由认为内存是个问题。你是正确的,new Tile[200][200]
为整个网格分配内存,即使没有 Tile
。请记住 HashMap
需要大量内存,因为每个 key/value 对都包含在一个 Entry
对象中,因此地图解决方案可能不会节省内存,除非网格是稀疏的。
我正在创建一个游戏,其中有 Tile
个对象的二维网格。这些 Tile
对象中的每一个都有许多包含对象的实例变量,例如 Tower
和 View
.
我目前正在将此网格实现为从 Point
(awt) 到 Tile
对象的 HashMap。这是实现网格的好方法吗?这允许我不映射某些还没有 Tile
对象的点。
备选方案是 Tile[][]
,但即使不存在图块,也需要为整个网格预分配足够的内存,对吗?
这两者也都存储在堆上,但我想知道 performance/space 这两个实现之间的差异。
两种解决方案(HashMap<Point, Tile>
和 new Tile[200][200]
)都可以。我想我会选择更简单的解决方案(数组),除非你有充分的理由认为内存是个问题。你是正确的,new Tile[200][200]
为整个网格分配内存,即使没有 Tile
。请记住 HashMap
需要大量内存,因为每个 key/value 对都包含在一个 Entry
对象中,因此地图解决方案可能不会节省内存,除非网格是稀疏的。