码迷,mamicode.com
首页 > 其他好文 > 详细

初识HashMap

时间:2017-07-18 13:27:43      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:构造   lin   com   try   说明   [1]   扩展   扩容   没有   

(1)ArrayList以数组形式实现,顺序插入、查找快,插入、删除较慢

(2)LinkedList以链表形式实现,顺序插入、查找较慢,插入、删除方便

那么是否有一种数据结构能够结合上面两种的优点呢?有,答案就是HashMap。

关  注  点 结      论
HashMap是否允许空 Key和Value都允许为空
HashMap是否允许重复数据 Key重复会覆盖、Value允许重复
HashMap是否有序 无序,特别说明这个无序指的是遍历HashMap的时候,得到的元素的顺序基本不可能是put的顺序
HashMap是否线程安全 非线程安全

Entry组成的是一个单向链表,因为里面只有Entry的后继Entry,而没有Entry的前驱Entry。用图表示应该是这么一个数据结构。

技术分享

1.空的Key会默认放在第0位的数组位置上

2.根据取模得到的位置,。另外,这个取模操作的正确性依赖于length必须是2的N次幂,这个熟悉二进制的朋友一定理解,因此注意HashMap构造函数中,如果你指定HashMap初始数组的大小initialCapacity,如果initialCapacity不是2的N次幂,HashMap会算出大于initialCapacity的最小2的N次幂的值,作为Entry数组的初始化大小

3.新的Entry再次占据table[1]的位置,并且持有原table[1]。

 

扩展:Hashmap扩容会导致死锁。

初识HashMap

标签:构造   lin   com   try   说明   [1]   扩展   扩容   没有   

原文地址:http://www.cnblogs.com/faker2014/p/7199613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!