java map用原生类型做key, 效率会高么
我们知道java里容器, 比如HashMap, 必须用对象引用来做key. 有时候我们会想做一个Map(int => int), 这时候就需要用到 包装类 Integer; java1.5前这样非常麻烦, 1.5后有了 自动装箱拆箱, 代码简单了很多, 不过运行时 仍对每一个int生成Integer存入, 这样: 1). 装箱拆箱需要 额外的时间; 2). 生成了大量Integer对象.
如果我们自己实现 int=> int的 hashmap, 效率会提高么.
killer7
11 years, 6 months ago
Answers
Android里有个工具类叫SparseArray,可以直接将int和Object做映射,类似于HashMap,但效率要高很多: SparseArray.java
UPDATE:
本回答未必是合适的答案,请看
@brayden
补充的评论。
另外,互联网上只找到一篇比较 SparseArray 和 HashMap 性能的文章: Android Performance Tweaking: ParseArray Versus Hashmap ,但是 SparseArray Addition 的 range 参数和 HashMap Addition 的 range 参数还不一样,而且我自己测试发现 SparseArray 的性能在很多组合下是要比 HashMap 差的。
可是,Android 官方言之凿凿地建议使用 SparseArray,我无语了,各位自己判断吧,反正我以后在任何情况下是不可能用 SparseArray 的!
2235760
answered 11 years, 6 months ago