# 前言

《架构师的自我修养》

# Hash表的时间复杂度为什么是O(1)?

从hash表的结构来看:

hash表是基于数组链表来实现的,存储数据是使用的是余数法,即使用hash表的长度(8)对key的hashCode(101)求余,余数(5)就是数组的下标。 在这里插入图片描述

但是,余数法存在一个问题,就是不同key可能存在相同的下标,比如:101%8=5和109%8=5得到相同的下标(5),这就造成了hash冲突。

为了解决hash冲突,常用的方法就是链表法,hash表将冲突的下标退化成一条链表,链表的时间复杂度为O(N),所以hash表单的时间复杂度就是O(1)

在这里插入图片描述

最后更新时间: 6/20/2022, 10:48:50 PM