美文网首页
HashMap总结

HashMap总结

作者: DesertSnow | 来源:发表于2017-04-25 15:06 被阅读0次

总结:

1.HashMap的默认大小为16,即桶数组的默认长度为16;

2.HashMap的默认装载因子是0.75;

3.HashMap内部的桶数组存储的是Entry对象,也就是键值对对象。

4.构造器支持指定初始容量和装载因子,为避免数组扩容带来的性能问题,建议根据需求指定初始容量。装载因子尽量不要修改,0.75是个比较靠谱的值。

5.桶数组的长度始终是2的整数次方(大于等于指定的初始容量),这样做可以减少冲突概率,提高查找效率。(可以从indexfor函数中看出,h&(length-1),若length为奇数,length-1为偶数那么h&(length-1)结果的最后一位必然为0,也就是说所有键都被散列到数组的偶数下标位置,这样会浪费近一半空间。另外,length为2的整数次方也保证了h&(length-1)与h%length等效).

6.HashMap接受null键;

7.HashMap不允许键重复,但是值是可以重复的。若键重复,那么新值会覆盖旧值。

8.HashMap通过链表法解决冲突问题,每个Entry都有一个next指针指向下一个Entry,冲突元素(不是键相同,而是hash值相同)会构成一个链表。并且最新插入的键值对始终位于链表首部。

9.当容量超过阈值(threshold)时,会发生扩容,扩容后的数组是原数组的两倍。扩容操作需要开辟新数组,并对原数组中所有键值对重新散列,非常耗时。我们应该尽量避免HashMap扩容。

10.HashMap非线程安全。

相关文章

网友评论

      本文标题:HashMap总结

      本文链接:https://www.haomeiwen.com/subject/ftpvzttx.html