存储对象的二维网格

时间:2015-11-19 02:18:51

标签: java big-o

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

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

替代方案是拥有Tile[][],但这需要为整个网格预先分配足够的内存,即使没有磁贴,对吧?

这两个也存储在堆上,但我想知道两个实现之间的性能/空间差异。

1 个答案:

答案 0 :(得分:1)

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