Android SparseArray(稀疏数组)

       所谓稀疏数组就是数组中大部分的内容值都未被使用(或都为零),在数组中仅有少部分的空间使用。因此造成内存空间的浪费,为了节省内存空间,并且不影响数组中原有的内容值,我们可以采用一种压缩的方式来表示稀疏数组的内容。

       在Android开发中,当我们定义一个HashMap<Integer,Object>对象时,编译器会给我们如下提示:

      

      我们再看下Android官方文档中关于SparseArray<E>的解释:


       翻译过来就是:稀疏数组是用来将整型数映射到对象的数据结构。它不像一般的对象数组,可以有差距指数。它是用来更高效的进行整数和对象类型之间的映射。

      其操作方法和HashMap基本类似,值得注意的是 它在存储时使用二分查找法进行存储,其插入源码如下:

  1. private static int binarySearch(int[] a, int start, int len, int key) {  
  2.     int high = start + len;  
  3.     int low = start - 1;  
  4.   
  5.   
  6.     while (high - low > 1) {  
  7.         int guess = (high + low) / 2;  
  8.   
  9.   
  10.         if (a[guess] < key) {  
  11.             low = guess;  
  12.             continue;  
  13.         }  
  14.         high = guess;  
  15.     }  
  16.   
  17.   
  18.     if (high == start + len)  
  19.         return start + len ^ 0xFFFFFFFF;  
  20.     if (a[high] == key) {  
  21.         return high;  
  22.     }  
  23.     return high ^ 0xFFFFFFFF;  
  24. }  
所以,它存储的数值都是按键值从小到大的顺序排列好的。

    总结:此数据结构是经过Android重写过,建议大家在Android开发中如遇到HashMap<Integer,Object>数据结构时,采用此数据结构进行开发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值