HashMap 原理一

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 具体实现原理

原文地址:https://www.cnblogs.com/yutf/p/14247857.html