HashMap是数组的链表(红黑树),
new HashMap<>(16)传入的长度是数组的长度,
那么链表(红黑树)的长度是不定的,
并且jdk1.8做了优化,当链表长度大于8时就转换为红黑树,那么增删改查速度提升了
为什么容量还要和数组长度一样,当key都在数组的同一个索引上时不是会造成大量空间浪费吗?
hash算法本身就应该避免在一般情况下,key是均匀分布的,出现分布不均匀的是极少数的情况。为了解决这种罕见的情况,hash算法还可以设计为二次探测/再散列。
你说的那种大量浪费的情况,在工程实践的情况下,不会发生。
首先HashMap不是红黑树,是散列表。散列表用到了数组,红黑树没有
首先我觉得HashMap不是数组的链表,而是链表的数组,最外层是数组,容量是数组的长度