基础知识
HashMap与HashTable之间的区别
异或运算^无符号右移>>>&与运算
底层实现方式
HashMap底层是有序存放的吗
JDK1.7
数组 + 链表
头插入方式(并发扩容死循环问题)
代码写法简单
JDK1.8
数组 + 链表 + 红黑树
尾插入
代码写法高大上
红黑树转换
数组容量 >= 64 & 链表长度大于8
红黑树节点个数<6转换链表
Hash函数计算
(h = key.hashCode()) ^ (h >>> 6)
i = (n - 1) & hash
时间复杂度
key没有冲突
Key产生冲突
链表存放则为o(N)
红黑树存放为O(log N)
hashcode碰撞问题
hashcode值相同,内容不同
性能优化
HashMap是如何解决Hash冲突问题的
JDK1.7版本
链表 增删效率非常高 查询效率非常低(o(n))
在高并发的情况下如何使用HashMap集合?
HashMap 线程不安全---HashTable---线程安全 但是最终变成单线程
ConcurrentHashMap 1.7分段锁 1.8 node节点 cas+syn锁 取消分段锁设计
HashMap如何合理指定集合初始值大小
HashMap面试题
为什么重写equals还要重写hashcode方法
HashMap如何避免内存泄漏问题
HashMap1.7底层是如何实现的
HashMapKey为null存放在什么位置 0
HashMap如何解决Hash冲突问题
HashMap底层采用单链表还是双链表 单向链表<br>
时间复杂度O(1)、O(N)、O(Logn)区别
HashMap根据key查询的时间复杂度
HashMap底层是有序存放的吗?无序 散列
为什么HashMap是无序的?
LinkedHashMap 和 TreeMap底层如何实现有序的?有序