HashMap面试题

HashMap面试题

1.HashMap中hash函数是怎么实现的?还有哪些hash函数的实现方式?

在这里插入图片描述

2.当两个对象的hashCode相等时会怎么样?

在这里插入图片描述

3.何时发生哈希碰撞和什么是哈希碰撞,如何解决哈希碰撞?

在这里插入图片描述

4.如果两个键的hashcode相同,如何存储键值对?

在这里插入图片描述

5.你了解HashMap的底层数据结构吗?

在这里插入图片描述

6.HashMap特点

HashMap面试题_第1张图片

7.传统hashMap的缺点,1.8为什么引入红黑树?这样结构的话不是更麻烦了吗?

在这里插入图片描述

8.为什么Map桶中节点个数超过8才转为红黑树?

HashMap面试题_第2张图片
HashMap面试题_第3张图片

9.为什么加载因子设置为0.75,初始化临界值是12?

HashMap面试题_第4张图片
HashMap面试题_第5张图片

10.float ft = ((float)s / loadFactor) + 1.0F;这一行代码中为什么要加1.0F ?

在这里插入图片描述

11.key的hash值如何计算的?

HashMap面试题_第6张图片
HashMap面试题_第7张图片
HashMap面试题_第8张图片
HashMap面试题_第9张图片

12.集合的初始化容量为什么必须是2的n次幂?如果输入值不是2的幂比如10会怎么样?

在这里插入图片描述
HashMap面试题_第10张图片
HashMap面试题_第11张图片
HashMap面试题_第12张图片
HashMap面试题_第13张图片

//创建HashMap集合的对象,指定数组长度是10,不是2的幂
HashMap hashMap = new HashMap(10);
public HashMap(int initialCapacity) {//initialCapacity=10
   this(initialCapacity, DEFAULT_LOAD_FACTOR);
 }
public HashMap(int initialCapacity, float loadFactor) {//initialCapacity=10
     if (initialCapacity < 0)
            throw new IllegalArgumentException("Illegal initial capacity: " +
                                               initialCapacity);
        if (initialCapacity > MAXIMUM_CAPACITY)
            initialCapacity = MAXIMUM_CAPACITY;
        if (loadFactor <= 0 || Float.isNaN(loadFactor))
            throw new IllegalArgumentException("Illegal load factor: " +
                                               loadFactor);
    this.loadFactor = loadFactor;
    this.threshold = tableSizeFor(initialCapacity);//initialCapacity=10
}
  /**
   * Returns a power of two size for the given target capacity.
  */
    static final int tableSizeFor(int cap) {//int cap = 10
        int n = cap - 1;
        n |= n >>> 1;
        n |= n >>> 2;
        n |= n >>> 4;
        n |= n >>> 8;
        n |= n >>> 16;
        return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
    }

HashMap面试题_第14张图片

13.HashMap的扩容机制是怎么样的?JDK7与JDK8有什么不同吗?

HashMap面试题_第15张图片
HashMap面试题_第16张图片

14.hashmap1.7和1.8的区别

HashMap面试题_第17张图片
详解

15.HashMap的扩容是什么

HashMap面试题_第18张图片
HashMap面试题_第19张图片

16.HashMap JDK7产生死锁的原因

详解

17.HashMap 为什么线程不安全?

详解

18.HashMap的主要参数都有哪些?

HashMap面试题_第20张图片

19.遍历map的几种方法

HashMap面试题_第21张图片

20.为什么HashMap使用红黑树而不使用AVL树

HashMap面试题_第22张图片

你可能感兴趣的:(#,java集合类面试题,hashmap)