HashMap

  HashMap是现在面试必问的一个集合,在工作中会经常使用到,所以不管为了应付面试还是工作,我们都需要对它有个很深的理解。

  下面是我在面试过程中对如何回答HashMap的面试进行的概要点整理;用于记录及以后回顾;具体的原理和源码可以参考网上大多数资料。

  一般面试官会问,说说你对HashMap的理解和原理?

  回复的点有:

   1、键值对 Key/Value

   2、数据结构数组+链表

   3、put调用hashCode方法生成hash值

   4、get调用equals方法返回值

然后面试官会继续引出Hash碰撞问题并让说下HashMap是如何解决优化这个问题的?

回复的点有:

  1、扩容

  2、数据结构的链表

初始的容量是16

针对扩容需要说出2n,也就是2的倍数扩容,这里最好说下扩容因子也就是0.75f

链表是如果出现Hash碰撞,将在链表后追加

可能最后面试官会抛出一个问题就是如果出现大数据量放入HashMap中将会出现什么情况?

1、性能效率低

2、出现大量的Hash碰撞

这里还有一个点是HashMap有一个最大的容量1<<30

 

/** 默认容量 */

static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
/** 最大容量 */
static final int MAXIMUM_CAPACITY = 1 << 30;
/** 扩容因子 */
static final float DEFAULT_LOAD_FACTOR = 0.75f;

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值