HashMap.ArrayMap的区别

我们都知道在安卓开发过程中,如果hashmap和Arraymap在内存优化方面,肯定会选择ArrayMap,因为ArrayMap占用空间小,但是ArrayMap以时间换空间,速度也是慢了很多。

ArrayMap因为查找方法是二分法,并且当你删除或者添加数据时,会对空间重新调整,在使用大量数据时,效率低于50%,但在写Android时,适时的使用ArrayMap,会给内存使用带来可观的提升

那他们区别是什么呢?

HashMap内部有一个HashMapEntry[]对象,每一个键值对都存储在这个对象里,当使用put方法添加键值对时,就会new一个HashMapEntry对象

ArrayMap的存储中没有Entry这个东西,他是由两个数组来维护的,mHashes数组中保存的是每一项的HashCode值,mArray中就是键值对,每两个元素代表一个键值对,前面保存key,后面的保存value

添加数据时扩容时的处理不一样

HashMap 是创建一个新的容量是之前二倍的对象,然后将之前的数据移动到新的。

ArrayMap用的是copy数据,所以效率相对要高,ArrayMap提供了数组收缩的功能,在clear或remove后,会重新收缩数组,是否空间,

    原文作者:h下雪天
    原文地址: https://www.jianshu.com/p/2e008ff91123
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞