gpt4 book ai didi

java - Java 程序内存中的大型静态映射

转载 作者:行者123 更新时间:2023-12-01 23:50:37 26 4
gpt4 key购买 nike

我正在将旧设备中的 16 位代码转换为表定义的字符串。代码有2000多个,且代码不连续。

它们目前在 HashMap 中定义如下...

public class SomeActivity {
private static final Map<Integer, String> myMap;
static {
Map<Integer, String> aMap = ...;
aMap.put(0x2345, "this");
aMap.put(0xFEA3, "that");
...
myMap = Collections.unmodifiableMap(aMap);
}
}

这正在为 Android 移植,我担心这会在设备上消耗多少 RAM。我可以做类似的事情,但存储在程序内存中吗?

最佳答案

代码可能不是连续的,但如果它们相当密集(即 min(keys)max(keys) 之间存在数字的可能性很高,比如说超过 75%),您可以通过预先构造一个大小为 max(keys)-min(keys)String[] 对象并使用来节省一些空间它就像一张 map 。

如果它可用/是 Android 开发的一个选项,原始 map 和其他数据结构的另一个绝佳替代方案是 Trove library在使用原始数据结构时,这同样可以节省大量空间和时间。

或者,由于您调用 Collections.unmodifyingMap() ,请考虑 Guava 的 ImmutableMap - 它不如 Trove 高效,Trove 避免了自动装箱原语,但它比 Java 的标准 HashMap ( though slightly slower ) 具有更高的内存效率。

也就是说,就像评论所暗示的那样,您很可能什么都不担心。一如既往,“过早的优化是万恶之源”。一个简单的 Java HashMap 很可能就能很好地为您服务。

关于java - Java 程序内存中的大型静态映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16345198/

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