gpt4 book ai didi

java - 关于自动装箱,Java 中 Map 的有效替代方案?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:23:16 26 4
gpt4 key购买 nike

我正在使用 LinkedHashMap<Integer, Integer>在 2D 游戏中将层的值存储在图 block 上。较高的数字绘制在较低的数字上。

在我的绘制函数中,我遍历值集并绘制每个值。这意味着我正在拆箱值 (width * height * numLayers)次。我正计划移植到 Android,因此我希望尽可能高效,但我认为这太多了?

我使用 map 的原因是层数(键)很重要:4 层以上的键绘制在玩家等上方。所以我经常需要跳过一堆键。

我可能只使用 int[10]因为我不需要那么多层,但是与我当前的 HashMap 相比,所有未使用的层都将占用 32 位,而我当前的 HashMap 可以有键 0、9 并且只占用 64 位。

最佳答案

Efficient alternative to Map ?

SparseIntArraysHashMap<Integer,Integer> 更有效率.根据文档

SparseIntArrays map integers to integers. Unlike a normal array of integers, there can be gaps in the indices. It is intended to be more memory efficient than using a HashMap to map Integers to Integers, both because it avoids auto-boxing keys and values and its data structure doesn't rely on an extra entry object for each mapping. For containers holding up to hundreds of items, the performance difference is not significant, less than 50%.

更多引用click here

对于非 Android 语言:

  • 编写您自己的基于哈希的 map 类(不实现 collections.Map)。在单元阵列中使用“线性探针”相对简单——另一种技术是链表,它(同样)将与“直接阵列”选项一样大。
  • GNU Trove has primitive maps那会做你想做的。但是,如果您不想耗尽内存的每个字节,我会赞成 Thomas 的建议,只使用数组。

关于java - 关于自动装箱,Java 中 Map<Integer, Integer> 的有效替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30411029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com