在Java面试中,HashMap几乎是“逢面必问”的经典题目。很多朋友一听到HashMap就紧张,担心被问到扩容、哈希冲突、红黑树这些概念。其实不用慌,哪怕你之前只是背过答案,只要理清三条主线问题,就能从容应对。Q1:HashMap底层为什么是“数组+链表”?数组用来做什么?HashMap的底层结构,可以想象成一个“带有编号的储物柜阵列”。这个阵列就是数组,每个位置叫做一个“桶”(bucket)。当你往HashMap里存入一个键值对时,会先通过键的哈希值计算出一个数组下标,然后把这个键值对放到对应下标的桶里。那问题来了: 不同的键有可能算出相同的数组下标,这就叫“哈希碰撞”。比如两个键的哈希值...