1.讲下对HashMap的认识
HashMap的底层是数组+链表+红黑树
存储的是键值对(key-value)关系,采用链表法处理哈希冲突
属于线程不安全的数据结构,在多线程中可以使用HashTable、ConcurrentHashMap替代
2.为什么HashMap的长度必须是2的n次幂?
在计算存储数组索引的时候,需要用key的哈希值进行取余操作,由于计算机没有取余的运算,会被转换为其他的操作运算,提高了复杂度。而当HashMap长度为2的n次幂,会满足公式(n-1) & hash == hash % n,就可以用位运算取代余运算,计算更高效。
No responses yet