最简洁SparseArray介绍

一、全文概括
1、SparseArray数据结构
2、数据插入以及取出过程
3、常见问题

二、SparseArray数据结构
1、由两个数组组成,一个用于存储key,一个用于存储value。存储key的数组为int型,存储value的数组为对象类型
2、key在数组中的index就是value在相应数组中的index

三、数据的插入以及取出过程
1、数据的插入文字描述
1.1、根据利用二分查找是否有对应的key值,若有返回大于0的index,替换value数组中相应index的值
1.2、没有找到则返回小于0的index.将index取反变为正数,查看value数组对应index的状态是否为删除状态。若为删除状态。则把key存在key数组index位上,把value存在value数组index位上。
1.3、如果不为删除状态,则判断是否需要回收(remove和delete方法都是改变相应位置的状态);如果需要进行回收,然后重新计算index;
1.4、插入数据,先判断需不需扩容,如果不需要则将key数组和value数组index及之后的数据往后移一位,将index对应的key和value插入
1.5、如果需要扩容(小于等于4,则返回8, 否则返回当前size的两倍)然后把index之前的数据考入,把index对应的key和value插入,把index后面的数据拷入
2、数据插入流程图


sparseArray插入过程.png

3.获取数据过程
利用二分查找找到key相应的index 然后获取value值

四、常见问题
1、有一堆数从中选两个数相加等于10;
常规的解决方法:暴力解决需要两个for循环
把数存入SparseArray

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,790评论 19 139
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 4,487评论 0 16
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,956评论 18 399
  • 总有那样这样的幸福是脱离我们的控制的,或者是不在我们的想象之中的,幸福是一种幸运的福分,这是从谁的话中被记住的,幸...
    Eskmous阅读 238评论 0 1
  • 做人不能太苛刻了。为什么要以小人之心度君子之腹呢?大家都是医疗行业中人。其中的艰辛又怎么不懂。试想一下要是你的病人...
    愚人日记2017阅读 180评论 0 0

友情链接更多精彩内容