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类型不限,同样采用二分法进行插入、查找。

  • 相关阅读:
    jumpserver的安装
    安装iostat 命令
    zabbix配置server,proxy,agent架构
    RGB颜色对照表
    【ZYNQ-7000开发之九】使用VDMA在PL和PS之间传输视频流数据
    基于AXI VDMA的图像采集系统
    图像采集调试总结
    DDR3调试总结
    内存系列二:深入理解硬件原理
    在嵌入式设计中使用MicroBlaze(Vivado版本)
  • 原文地址:https://www.cnblogs.com/wavky/p/5701221.html
Copyright © 2011-2022 走看看