数据结构基础以及算法(这一部分不需要准备,看眼8大排序就够用了)、HashMap、ConcurrentHashMap

这一部分没什么好讲解的内容。从头开始,自己看Java的源码,敲一遍,实现一遍HashMap, ConcurrentHashMap什么的,就已经足够了。主要要区分开Hashmap还有concurrenthashmap他们两者的区别。就足以应对面试。

八大排血算法自己一定要在IDE中实现一遍,以加深印象。同时,hashmap还有concurrenthashmap也要根据原码进行一遍实现,以加深印象。


关于hashmap还是稍微写上两笔:

hashmap底层实现实际上就是所谓的hash数组加上一个链表,中文叫做散列表。

实际上就是一个叫做table的数组,然后数组中元素的类型是Entry。这个Entry有key,有value,有next等等。

hashmap都是先确定容量和因子,建一个Entry类型的数组table,然后当get的时候,使用key的key.hashcode()作为table的index。table[index]一定是一个链表的节点。然后当key的hashcode相等的时候,我们就去这个链表的后面搜索这个key,一直到找到相同的entry或者没有entry就向链表中进行插入。(如果有key,覆盖,如果没有使用addEntry方法把这个加入到table数组中去)

hashtable的底层实现跟hashmap一样都是散列表。不同的是一个是线程的安全问题,table所有的方法都加上了syncronized,还有就是计算hashcode的方法不一样,还有hashmap使用abstractmap接口,hashtable使用了Dictionary接口。

map可以有null的键值,table不允许有null的键值


ConcurrentHashMap


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值