New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2019-05-15:谈谈ArrayMap和HashMap的区别? #54
Comments
ArrayMap采用的是数组+数组的形式,一个数组存储key的hash值,一个数组存储value,所以如果数据较大时,效率相对较低; |
1.查找效率 2.扩容数量 3.扩容效率 4.内存消耗 5.总结 |
日常打卡 对这一块不了解 平时也只是简单的使用了hashMap 学习了 |
打卡,学习 |
HashMap内部是使用一个默认容量为16的数组来存储数据的,而数组中每个元素却又是一个链表的头结点。所以,更准确的来说,HashMap内部存储结构是使用哈希表的拉链结构(数组+链表/红黑树),其中链表和红黑树是为了解决 hash 冲突而设计了。详细可参照hashMap 思维导图 关注点: 1. 扩容时需要元素移动以及重 hash; 2. 加载因子值选择,以空间换时间; 3. hash 冲突时,使用链表或红黑树存储数据; 4. hash 算法的随机和均匀:扰动函数 ArrayMap是一个<key,value>映射的数据结构,内部是使用两个数组进行数据存储,一个数组记录key的hash值。另外一个数组记录Value值。它会对key使用二分法进行从小到大排序,在加入、删除、查找数据的时候都是先使用二分查找法得到相应的index,然后通过index来进行加入、查找、删除等操作。 关注点:1. 二分查找; 2. 数组扩容; 3. 插入数据时数组元素的移动;4. 以时间换空间, 在Android 上尤其珍贵 5. 数据量很大时的性能退化 |
No description provided.
The text was updated successfully, but these errors were encountered: