Java SparseArray

发布时间:2021-10-27 19:53:03

转载请注明链接:https://blog.csdn.net/feather_wch/article/details/81538653


SparseArray

版本: 2018/8/9-1(13:19)






SparseArray
插入删除设计模式SparseArray和HashMap性能对比SparseArray、HashMap、ArrayMap性能对比参考资料



1、SparseArray是什么?



    Android因为手机性能和内存有限,提供了一套高效的工具。SparseArray就是其中之一。SparseArray是Android特有的稀疏数组的实现,用于替换HashMap中Key = Integer,Value=Object的情况。SparseArray的效率相比于HashMap并没有多少提升。数据量达到10万条时,正序插入方面SparseArray效率高,倒序插入HashMap比SparseArray快很多,查询方面HashMap却会更快一点。SparseArray在数据量达到10万条时,内存方面能比HashMap节约27%。
    1.


2、SparseArray的特点



    适合Key=Integer,Value=Object的情况内存占用更小.(根据情况进行取舍)线程不安全少量数据时SpareArray比较适合,大量数据时HashMap的性能更高。


3、SparseArray家族的四种集合


//用于替换 HashMap
SparseArray SparseArray11=new SparseArray();
SparseArray11.append(1,"dd");

//用于替换 HashMap
SparseBooleanArray sparseBooleanArray=new SparseBooleanArray();
sparseBooleanArray.append(1,false);

//用于替换 HashMap
SparseIntArray SparseIntArray=new SparseIntArray();
SparseIntArray.append(1,1);

//用于替换 HashMap
SparseLongArray SparseLongArray=new SparseLongArray();
SparseLongArray.append(1,1111000L);

插入

4、SparseArray的插入效率



    每次插入都选择二分查找,因此在倒序插入的时候情况汇恒糟糕。HashMap的插入,会进行冲突处理,而不需要遍历每个值。因此效率更高。


删除
设计模式

5、SparseArray采用的设计模式



    原型模式原型模式内存中复制数据,不会调用到类的构造的方法.原型模式内访问权限对原型模式无效。


SparseArray和HashMap性能对比

6、SparseArray和HashMap的性能


数据量插入速度内存大小查找速度
10,0000正序SparseArray插入略快SparseArray内存占用小27%HashMap胜出
倒序HashMap要快一个数量级SparseArray内存占用小27%HashMap胜出

SparseArray、HashMap、ArrayMap性能对比

1、正序插入性能排名(最优情况)



    SparseArray NO1ArrayMap NO2HashMap NO3


2、倒序插入性能排名(最差情况)



    HashMap NO1:30%的优化SparseArray NO2ArrayMap NO3


3、内存占用比



    SparseArray NO1HashMap、ArrayMap NO2


4、查询性能对比



    直接对比图是有一定问题的,在数据量达到10万的时候HashMap性能也是最好的,因此会有一个反超过程。


5、总结



    正序插入(最快):1-SparseArray 2-ArrayMap 3-HashMap倒序插入(最快): 1-HashMap 2-SparseArray 3-ArrayMap内存占用比(最少):1-SparseArray 2-ArrayMap/HashMap查询速度: 1-HashMap 2-SparseArray 3-ArrayMap
    因此数据量大时,HashMap最好。如果想解决空间或者数据较少时,SparseArray更好。


参考资料
    Android性能优化之谈谈SparseArray,SparseBooleanArray和SparseIntArrayAndroid学*笔记之性能优化SparseArrayHashMap,ArrayMap,SparseArray源码分析及性能对比

相关文档

  • 我要给网络游戏颁个最佳危害奖
  • 新鲜百合的功效与作用是什么?
  • 《五原大捷》观后感600字
  • 一级建筑师考试学历要求2017
  • 什么是任务,什么是进程,什么是线程?
  • 无痕收腹内裤品牌十大排行榜
  • 小学生上课不听话怎么办
  • 导致牙龈肿胀的原因是什么
  • dmg镜像如何写入u盘_win10制作ghost镜像 如何制作win10u盘安装镜像
  • 我和小草有个约定
  • windows server 2008 自动重启
  • 秋冬什么颜色指甲油显白低调又显白的指甲颜色
  • 昂昂溪遗址博物馆介绍
  • 关于高校教研室工作总结
  • 备孕期间上火怎么办 宝宝上火能喝洛神花茶吗
  • ORA-01033:ORACLE initialization or shutdown in process
  • 自动驾驶(三十)---------驾驶员监测
  • 黄瓜炒鸡蛋怎么做好吃的做法
  • 做人的故事读后感
  • jira字段配置(域配置)_到期日、时间跟踪等根据需要自行配置
  • ULK --- Chap 4: Softirqs and Tasklets (Note)
  • 【瑞雪迎offer】95后小伙抓住秋招的尾巴,成功入职百度上岸,附上大佬的面试总结!
  • 社会公共常识
  • 室内设计专业简洁自我评定
  • 学习Unity Vuforia??Ground plane(地面识别)
  • 关于教育重要性的俗语谚语
  • 《感恩朋友》600字作文
  • 服务计算??简单web服务与客户端开发
  • 关于成功的座右铭集锦
  • 东部华侨城大峡谷一日游攻略推荐
  • 猜你喜欢

    电脑版