???哪些实现方式?::直接定址法、数字分析法、除留余数法、分段叠加法、平方取中法、伪随机数法
**->:**HashMap在get(Object key)时,
(1)先高低位异或重新计算获得hashcode值,然后与运算取模计算得到在数组中的存储下标index
(2)如果是bucket里的第一个节点,则直接命中;否则有冲突,通过key.equals(k)查找对应的Node,若为树则O(logn),若为链表则 O(n);
**->:**碰撞探测,也即上述set和get方法中提到的hashCode相同时,则数组index位置处的bucket中以链表形式进行存储和查找
描述:HashMap初始化时,系统会创建一个长度为capcity(16)的的Node数组,该Node数组中可以存储node元素的位置被称为桶bucket(每个桶均有其索引,且只存储一个node元素,且node对象含有一个引用变量,用以指向下一个node进而构成node链表结构)
**->:**非线程安全,这是由于:
(1)不同线程在put操作时,如果是其中一个线程改变了某一键值对的value,那么其他的线程就get不到预期的值,而且值是在不停改变的,因此这样也不是线程安全的;
(2)在多线程中,当有两个线程同时在put操作的时候,如果存在扩容调用resize