您当前的位置: 首页 >  ar
  • 0浏览

    0关注

    674博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

面试:SpareArray的优缺点

沙漠一只雕得儿得儿 发布时间:2021-12-14 22:00:29 ,浏览量:0

SparseArray优势:

1、避免了对key的自动装箱(int转为Integer类型)它内部则是通过两个数组来进行数据存储的,一个存储key,另外一个存储value

2、压缩的方式来表示稀疏数组的数据,从而节约内存空间。

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

SparseArray劣势:

执行效率低,特别当数据量大的时候。一般SparseArray存数据量少的数据

一般来说,SparseArray执行效率比HashMap要慢一点,因为查找需要折半查找,而添加删除则需要在数组中执行,而HashMap都是通过外部映射。如果在数据量比较大的情况下,那么它的性能将退化至少50%。

注意事项:

SparseArray是android里为这样的Hashmap而专门写的类,目的是提高内存效率,其核心是折半查找函数(binarySearch)。注意内存二字很重要,因为它仅仅提高内存效率,而不是提高执行效率,它只适用于android系统(内存对android项目有多重要,地球人都知道)。

SparseArray有两个优点:1.避免了自动装箱(auto-boxing),2.数据结构不会依赖于外部对象映射。我们知道HashMap 采用一种所谓的“Hash 算法”来决定每个元素的存储位置,存放的都是数组元素的引用,通过每个对象的hash值来映射对象。而SparseArray则是用数组数据结构来保存映射,然后通过折半查找来找到对象。但其实一般来说,SparseArray执行效率比HashMap要慢一点,因为查找需要折半查找,而添加删除则需要在数组中执行,而HashMap都是通过外部映射。但相对来说影响不大,最主要是SparseArray不需要开辟内存空间来额外存储外部映射,从而节省内存。

关注
打赏
1657159701
查看更多评论
立即登录/注册

微信扫码登录

0.0355s