美文网首页
HashMap,SparseArray,Arraymap分析

HashMap,SparseArray,Arraymap分析

作者: DeveloperCong | 来源:发表于2017-04-23 22:23 被阅读0次

1 HashMap的原理可以看美团点评的文章:

HashMap 初始化一个长度为16的数组,数组的每个元素又是一个链表结构;

HashMap在put数据的时候,会根据key的hashCode值进行hash算法, 在进行高位运算得到这个值在data[] 数组中的index,然后将value放入数组的位置,如果发生hash碰撞使用链地址法-也就是多个值成为一个链表形式。

当然还有其他方法:开放地址法 ,再哈希法,链地址法,建立公共溢出区。

而且HashMap还有一个 负载因此0.75,存储数据达到容量的75%时会扩容一倍大小;

这样可知--HashMap在内存使用率上并不是很高;在数据量较大的情况下,data数组的数据是不连续的,浪费了许多内存;

2 ArrayMap在设计上更多的考虑了内存优化;

他有两个数组;一个数组用来存放key的hash值,并且是排好序的;另一个数组用来存放keyvalue值;

这样一个数据就占用一份内存;内存节省;

get/put时会根据key的hashCode进行二分查找到index,在另一个数组中获取值;

3 SpareArray和Arraymap是类似的,但是它只是在key为int的时候能够使用,也就是去掉了装箱的操作,性能稍有提升。

一般来说数据量小于1000的时候可以使用ArrayMap来替代hashMap,节约内存;

但数据量较大的时候查询速度没有hashmap块;查询和插入的速度比hashmap慢。

参考 http://www.jianshu.com/p/7b9a1b386265

相关文章

网友评论

      本文标题:HashMap,SparseArray,Arraymap分析

      本文链接:https://www.haomeiwen.com/subject/qvmdzttx.html