欢迎来到我的博客

HashMap底层原理

HashMap底层主要是针对key的算法,与HashSet类似,取key的哈希值模于(modulus)存储空间大小,该模数就是HashMap空间的顺序位置,里面存放了Key值和Value的地址。然而万事无完美,如果两个不同的Key,通过哈希函数得出的实际存储地址相同,那就冲突了。为了存储冲突的多个地址,Java使用了链表,但链表遍历效率较低,Java8改进为红黑树算法。当冲突越严重性能越低。哈希空间扩容后可以提高性能。HashMap对象初始化时,默认的空间是16个,并且设了一个扩充因子,默认值是0.75,也就是当哈希表中的条目超过了容量和加载因子的乘积的时候(默认16*0.75=12时),就会扩容,并重新进行哈希操作。虽然扩容后性能可以提升,但扩充过程中会重新哈希,因此扩充过程会消耗时间。

posted @ 2018-09-30 10:25  八千轮回  阅读(124)  评论(0编辑  收藏  举报
人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。