代码编织梦想

若没有哈希碰撞,根据哈希算法之后得到元素的位置,时间复杂度是O(1)

有哈希碰撞,如果是链表,因为链表所以O(n),但链表长度最大是8,是个常量,也可以是O(1),

如果是红黑树,红黑树查询的时间复杂读是O(logn),但是根据规律,链表转为红黑树的概率低于千万分之一,如果在极端情况下,所有元素都发生了hash碰撞,变成了红黑树,那么时间复杂度是O(logn)

不同数量出现的概率如下:

  • 0: 0.60653066
  • 1: 0.30326533
  • 2: 0.07581633
  • 3: 0.01263606
  • 4: 0.00157952
  • 5: 0.00015795
  • 6: 0.00001316
  • 7: 0.00000094
  • 8: 0.00000006
    大于8: <千万分之1

所以时间复杂度可以近似于是O(1)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37335180/article/details/129624514

10分钟拿下 hashmap_一小页的博客-爱代码爱编程_10分钟拿下 hashmap_一小页的博客-爱代码爱编程

道阻且长,行则将至。请相信我,你一定会更优秀! 备注:本文 jdk版本为 1.7,主要是为了帮助小白入门的,大佬请绕道。入门后自己去推敲高版本的jdk源代码。 目录 1、什么是 HashMap,什么时候选择 HashMap? 2、HashMap 数据结构及其工作原理? 2.1 数据结构 2.2 工作原理 3、HashMap和Hash