何时使用Android的ArrayMap而不是HashMap?

时间:2015-10-10 10:54:07

标签: java android

Android有自己的HashMap实现,它不使用Autoboxing,它在某种程度上更好的性能(CPU或RAM)?

https://developer.android.com/reference/android/support/v4/util/ArrayMap.html

根据我在这里阅读的内容,如果我的HashMaps的大小低于数百条记录并且经常被写入,我应该用ArrayMap对象替换我的HashMap对象。用ArrayMaps替换我的HashMaps是没有意义的,如果它们将包含数百个对象并且将被写入一次并经常读取。我纠正吗?

3 个答案:

答案 0 :(得分:8)

你应该看看这个视频:https://www.youtube.com/watch?v=ORgucLTtTDI
完美情况:
1.具有大量访问的少量项目(< 1000)或者插入和删除很少,以至于没有真正注意到这样做的开销。
2.地图容器 - 地图地图,其中子图往往具有较少的项目数,并且经常在很长一段时间内迭代。

答案 1 :(得分:5)

ArrayMap使用的内存比HashMap少,建议最多使用几百个项目,特别是如果地图不经常更新。花费更少的时间来分配和释放内存也可以提供一些一般的性能提升。

更新性能有点差,因为任何插入都需要数组副本。读取性能与少数项目相当,并使用二进制搜索。

答案 2 :(得分:4)

你有没有理由尝试这样的替换?

如果要提高性能,那么您必须在更换之前和之后采取措施,看看替换是否有帮助。

可能不值得努力。