Aud*_*row 5 java autoboxing android unboxing linkedhashmap
我正在使用 aLinkedHashMap<Integer, Integer>来存储 2D 游戏中图块上的图层值。较高的数字覆盖较低的数字。
在我的绘制函数中,我迭代设置的值并绘制每个值。这意味着我要(width * height * numLayers)多次拆箱价值观。我计划移植到 Android,因此我希望尽可能高效,但我认为这太多了?
我使用地图的原因是因为层数(键)很重要:4 以上的键是在玩家上方绘制的,等等。所以我经常需要跳过一堆键。
我可能可以只使用 an,int[10]因为我不需要那么多层,但是与我当前的 HashMap 相比,所有未使用的层都会占用 32 位,而我当前的 HashMap 可以有键 0、9,只占用 64 位位。
地图的有效替代品?
SparseIntArrays比 更有效HashMap<Integer,Integer>。根据文件
SparseIntArrays 将整数映射到整数。与普通整数数组不同,索引中可以存在间隙。与使用 HashMap 将整数映射到整数相比,它的内存效率更高,因为它避免了自动装箱键和值,而且它的数据结构不依赖于每个映射的额外条目对象。对于容纳数百个物品的容器,性能差异并不显着,小于 50%。
如需更多参考,请点击此处
对于非 Android 语言:
| 归档时间: |
|
| 查看次数: |
1775 次 |
| 最近记录: |