hashmap常见面试题

1.4 get()方法的工作原理?

根据key的hashcodejinxinghash,得到buckets的值,如果存在碰撞,则利用equals方法在链表中产找

  通过对key的hashCode()进行hashing,并计算下标( n-1 & hash),从而获得buckets的位置。如果产生碰撞,则利用key.equals()方法去链表中查找对应的节点。

1.5 HashMap中hash函数怎么是是实现的?还有哪些 hash 的实现方式?
  1. 对key的hashCode做hash操作(高16bit不变,低16bit和高16bit做了一个异或); 
  2. h & (length-1); //通过位操作得到下标index。

  还有数字分析法、平方取中法、分段叠加法、 除留余数法、 伪随机数法。

1.2 HashMap的原理,内部数据结构?
  HashMap是基于hashing的原理,底层使用哈希表(数组 + 链表,后改为数组+红黑树,原因是因为链表太长,查询时间复杂度太高)实现。里边最重要的两个方法put、get,使用put(key, value)存储对象到HashMap中,使用get(key)从HashMap中获取对象。 
  存储对象时,我们将K/V传给put方法时,它调用hashCode计算hash从而得到bucket位置,进一步存储,HashMap会根据当前bucket的占用情况自动调整容量(超过Load Facotr则resi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值