美文网首页
HashMap.ArrayMap的区别

HashMap.ArrayMap的区别

作者: 多多爱美丽 | 来源:发表于2017-10-12 10:53 被阅读0次

    我们都知道在安卓开发过程中,如果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后,会重新收缩数组,是否空间,

    相关文章

      网友评论

          本文标题:HashMap.ArrayMap的区别

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