我正在使用LinkedHashMap<Integer, Integer>
来存储2D游戏中图块的图层值。较低的数字会得出更高的数字。
在我的绘图功能中,我遍历值集并绘制每个值。这意味着我将取消装箱值(width * height * numLayers)
次。我打算移植到Android,所以我希望尽可能高效,而且我认为这太过分了?
我使用Map的原因是因为图层编号(键)很重要:4以上的键是通过玩家等绘制的。所以我经常需要跳过一堆键。
我可能只使用int[10]
,因为我不需要那么多层,但是与我当前的HashMap相比,所有未使用的层都将占用32位0,9,只占64位。
答案 0 :(得分:3)
地图的有效替代方案?
SparseIntArrays
比HashMap<Integer,Integer>
效率更高。根据文件
SparseIntArrays将整数映射到整数。不像普通的数组 整数,指数可能存在差距。它的目的是更多 内存比使用HashMap将整数映射到整数更有效, 因为它避免了自动装箱键和值及其数据 结构并不依赖于每个映射的额外条目对象。对于容纳数百件物品的容器,性能差异不显着,小于50%。
以获取更多参考click here
适用于非Android语言: