我正在创建一个游戏,其中我有一个Tile
个对象的2D网格。这些Tile
个对象中的每一个都有许多包含Tower
和View
等对象的实例变量。
我目前正在将此网格实现为从Point
(awt)到Tile
对象的HashMap。这是实现网格的好方法吗?这使我不会映射某些尚未拥有Tile
对象的点。
替代方案是拥有Tile[][]
,但这需要为整个网格预先分配足够的内存,即使没有磁贴,对吧?
这两个也存储在堆上,但我想知道两个实现之间的性能/空间差异。
答案 0 :(得分:1)
两种解决方案(HashMap<Point, Tile>
和new Tile[200][200]
)都可以使用。我想我会选择更简单的解决方案(数组),除非你有充分的理由认为内存是一个问题。你是正确的new Tile[200][200]
为整个网格分配内存,即使没有Tile
。请记住,HashMap
需要大量内存,因为每个键/值对都包含在Entry
对象中,因此除非网格稀疏,否则地图解决方案可能无法保存内存。