面试基础必备

1、hashmap

数组:连续的存储单元。Java.util.ArrayList的底层就是数组。

链表:物理存储单元上非连续的、非顺序的存储结构。lingkedList底层是链表,查找慢,查找慢,查找慢。。。

存储put的时候-----算法是:hashcode

hash碰撞-不能让后面来的数据覆盖,就要应用到链表,后来的元素在原数组中,之前的用指针指向。

get方法   找到hash值判断key和hash,不相等的时候去判断next是否为空,不为空继续向下找。

红黑树是为了解决链表过长产生的效率问题。

一开始不直接用红黑树,是因为红黑树插入太慢,一直在左旋,右旋。>8变

hashmap扩容阈值,数组本身阈值16,但是有个扩容因子,0.75f,就是数组长度>12.就扩容致当前数组长度的2倍。

2、线程安全的情况

并发的情况,并且没有扩容也就是没有调用put方法,只调用get方法。

 

posted @ 2020-10-14 10:41  我是翔宇呀  阅读(61)  评论(0编辑  收藏  举报