Javajava面试集锦

HashMap常见面试题

2020-04-13  本文已影响0人  西安法律咨询服务平台与程序员

HashMap 的数据结构?

在HashMap中,当两个key对象的 hashCode 相同会发生什么?

两个key的hashCode相同,则会发送hash碰撞

JDK8中对HashMap做了哪些改变?

  1. 在java 1.8中,如果链表的长度超过了8,那么链表将转换为红黑树。(桶的数量必须大于64,小于64的时候只会扩容)
  2. 发生hash碰撞时,java 1.7 会在链表的头部插入,而java 1.8会在链表的尾部插入
  3. 在扩容时,JDK1.7会使桶内链表的顺序颠倒,JDK1.8基本保持桶内键值对的顺序。

HashMap 和 HashTable 有什么区别?

  1. HashMap 是线程不安全的,HashTable 是线程安全的;
  2. 由于线程安全,所以 HashTable 的效率比不上 HashMap;
  3. HashMap最多只允许一条记录的键为null,允许多条记录的值为null,而 HashTable不允许;
  4. HashMap 默认初始化数组的大小为16,HashTable 为 11,前者扩容时,扩大两倍,后者扩大两倍+1;
  5. HashMap 需要重新计算 hash 值,而 HashTable 直接使用对象的 hashCode

hash冲突你还知道哪些解决办法?

比较出名的有四种(1)开放定址法(2)链地址法(3)再哈希法(4)公共溢出区域法

上一篇下一篇

猜你喜欢

热点阅读