20散列表(下):为什么散列表和链表经常会一起使用?.pdfVIP

  • 1
  • 0
  • 约1.62万字
  • 约 13页
  • 2022-02-22 发布于吉林
  • 举报

20散列表(下):为什么散列表和链表经常会一起使用?.pdf

20|散列表(下):为什么散列表和链表经常会一起使用? 20|散列表(下):为什么散列表和链表经常会一起使用? 我们已经学习了20节内容,你有没有发现,有两种数据结构,散列表和链表,经常会被放在一起使用。你还记得,前面的章节中都有哪些地方讲到散列表和链表 的组合使用吗?我带你一起回忆一下。 在链表那一节,我讲到如何用链表来实现LRU缓存淘汰算法,但是链表实现的LRU缓存淘汰算法的时间复杂度是O(n) ,当时我也提到了,通过散列表可以将这个 时间复杂度降低到O(1)。 在跳表那一节,我提到Redis的有序集合是使用跳表来实现的,跳表可以看作一种改进版的链表。当时我们也提到,Redis有序集合不仅使用了跳表,还用到了散列 表。 除此之外,如果你熟悉Java编程语言,你会发现LinkedHashMap这样一个常用的容器,也用到了散列表和链表两种数据结构。 今天,我们就来看看,在这几个问题中,散列表和链表都是如何组合起来使用的,以及为什么散列表和链表会经常放到一块使用。 LRU缓存淘汰算法 在链表那一节中,我提到,借助散列表,我们可以把LRU缓存淘汰算法的时间复杂度降低为O(1)。现在,我们就来看看它是如何做到的。 首先,我们来回顾一下当时我们是如何通过链表实现L

文档评论(0)

1亿VIP精品文档

相关文档