Android中SparseArray性能优化的使用方法

2019-12-10 18:34:23于丽
这篇文章主要为大家详细介绍了Android中SparseArray性能优化的使用方法,感兴趣的小伙伴们可以参考一下  

之前一篇文章研究完横向二级菜单,发现其中使用了SparseArray去替换HashMap的使用.于是乎自己查了一些相关资料,自己同时对性能进行了一些测试。首先先说一下SparseArray的原理.

  SparseArray(稀疏数组).他是Android内部特有的api,标准的jdk是没有这个类的.在Android内部用来替代HashMap<Integer,E>这种形式,使用SparseArray更加节省内存空间的使用,SparseArray也是以key和value对数据进行保存的.使用的时候只需要指定value的类型即可.并且key不需要封装成对象类型.

  楼主根据亲测,SparseArray存储数据占用的内存空间确实比HashMap要小一些.一会放出测试的数据在进行分析。我们首先看一下二者的结构特性.

  HashMap是数组和链表的结合体,被称为链表散列.

Android,SparseArray,性能优化

  SparseArray是单纯数组的结合.被称为稀疏数组,对数据保存的时候,不会有额外的开销.结构如下:

Android,SparseArray,性能优化

  这就是二者的结构,我们需要看一下二者到底有什么差异...

  首先是插入:

  HashMap的正序插入:

 HashMap<Integer, String>map = new HashMap<Integer, String>();
 long start_map = System.currentTimeMillis();
 for(int i=0;i<MAX;i++){
   map.put(i, String.valueOf(i));
 }
 long map_memory = Runtime.getRuntime().totalMemory();
 long end_map = System.currentTimeMillis()-start_map;
 System.out.println("<---Map的插入时间--->"+end_map+"<---Map占用的内存--->"+map_memory);