为什么我在逐渐冷落HashMap,扶SparseArray上位

You know ,在Android开发时,我们使用的大部分都是Java的api,比如遇到键值对保存,我们首先想到HashMap这个api,其使用率非常高,但是这样真的好吗?其实Android是个对于内存极其敏感的平台。也推出了一部分更适用自己的api。比如针对HashMap,Android给出了稀疏数组替代方案。

Why?

HashMap

我们先说HashMap,HashMap是一个容量16的数组。也就是说,只要初始化,没有put进去数值也已经开辟了16的内存。而当用完的时候,扩容为原来的2倍。。。

int newCapacity = oldCapacity * 2;

SparseArray

SparseArray比HashMap更省内存,在某些条件下性能更好,主要是因为它避免了对key的自动装箱(int转为Integer类型),它内部则是通过两个数组来进行数据存储的,一个存储key,另外一个存储value,为了优化性能,它内部对数据还采取了压缩的方式来表示稀疏数组的数据,从而节约内存空间。

要不要用SparseArray彻底替代HashMap?

虽说SparseArray性能比较好,但是由于其添加、查找、删除数据都需要先进行一次二分查找,所以在数据量大的情况下性能并不明显,将降低至少50%。
所以,数据量不大,最好在千级以内,我们可以使用SparseArray代替HashMap。

更多相关文章

  1. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  2. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  3. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  4. 调试FSL Android(安卓)GPS学习select和epoll的用法
  5. Android(安卓)轻松实现仿QQ消息下拉刷新
  6. Android之Adapter(适配器)
  7. Android下sqlite的数据查看
  8. Android的IPC机制(五)—— ContentProvider的使用
  9. Android最佳性能实践(三)——高性能编码优化

随机推荐

  1. Android(安卓)自定义音量调节控件
  2. android studio升级后的各种错误解决
  3. Android下拉刷新,上拉加载
  4. android上下左右滑动监听
  5. android创建文件夹
  6. Android文件读写,保存数据
  7. 在android 模拟器上安装 apt 文件
  8. Android修改文件权限
  9. Android出现java.net.SocketException: P
  10. Android(安卓)Jetpack-Paging使用