java 面试基本操作
每次看过以后就忘了,总记不住,自己在这里总结记录一下;
HashMap 基础掌握 (HashMap和 ArrayList比较常用,也比较好用)
1、 key value 存储
2、线程不安全
3、存储结构 数组+链表
4、存储过程:将要存储的数据key值计算hashCode 值,然后利用hashCode 值对数组长度求余,
这样就得到了,数组下标(也就是数据要存储的位置),然后查看当前数组下标位置是否有值
无值;则存入即可
有值:判断新对象key值,是否与已存在的对象key值相等(链表对象中的key值相等),相等的话则覆盖旧值,
否则将当前数组存储对象(key ,value ,next)的地址存储到新的对象(next中),然后新对象地址覆盖数组内容,
这样每次新的对象都是在在最前面的(null值key一直放在最前面)
5、如果链表长度大于等于8时,转换成红黑树,提高查询效率
问题来了:
1、为什么会出现hashMap 这样的结构,其他ArrayList ,LinkList 不能替换使用吗
2、红黑树为什么会提高效率,为什么不用其他的树
3、HashMap线程不安全的话,如何解决这个问题
4、HashMap 具体实现原理