zoukankan      html  css  js  c++  java
  • HashMap & SparseArray & ArrayMap 简单说明

    HashMap

    使用有限一维拉链数组存储结构,鉴于所用Entry结构{key, value, nextExtry}Keyhash值用于取余获得所属的数组行下标,通过链表方式顺序存放所有余数相同的各个Entry。该数组的每个存储单元被称为“桶”。

    取值时依据hash定位到行,再遍历链表定位key对应的Entry对象,并通过此方式解决哈希冲突问题。

    当 Entry总数据量 数组Length(桶容量) * 0.75默认加载因子时,数组将扩容至原数组2倍,并重新计算排布旧数据,重建数据结构,此步骤非常消耗性能,最佳方式是初始化HashMap为接近目标容量的2次幂大小,减少扩容次数。

    桶容量设置得太高会导致内存浪费,而当数据量达到千万级别时容易产生大量冲突,导致冲突链表过长,影响性能。

    SparseArray稀疏数组

    Android框架内的优化型存储结构类,在key为整型数值类型时可考虑替代HashMap提供更有效的空间利用率。

    内部通过两个平行数组方式分别(同步)存储keyvaluekey限定为intlong类型,节省内存,避免装箱拆箱。

    采用二分法进行插入和查找,存储按大小排序,大数据集下数据插入速度慢,但查找性能高,在千级数据量内可取代HashMap

    ArrayMap

    Android框架内的优化型存储结构类。

    类似于SparseArray使用两个平行数组分别(同步)存储keyvalue,模拟Map使用方式,Key类型不限,同样采用二分法进行插入、查找。

  • 相关阅读:
    hadoop3.0.0测验
    红外遥控器通信原理_红外遥控器协议
    N76E003之WDT(看门狗定时器)
    N76E003之IIC
    电阻之上拉电阻与下拉电阻详解(转)
    GPIO输入输出各种模式(推挽、开漏、准双向端口)详解(转)
    N76E003之IO控制
    N76E003之SPI
    51单片机的idata,xdata,pdata,data的详解(转)
    N76E003之ISP
  • 原文地址:https://www.cnblogs.com/wavky/p/5701221.html
Copyright © 2011-2022 走看看