列表 vs 数组列表 vs 字典 vs 哈希表 vs 堆栈 vs 队列



我们可以使用其中任何一个(包括List,ArrayList,Dictionary,Hashtable,Stack,Queue)来保存值或保存对其他对象的引用作为集合。

但是,我的问题是什么时候使用哪一个?

列表

列表允许重复项,可按索引访问,并支持线性遍历。

  • 数组列表 - 不支持泛型类型的基于数组的列表。 它不强制类型安全,通常应避免使用。

  • List - 支持泛型类型并强制实施类型安全的数组列表。 由于它是不连续的,因此它可以在不为整个列表重新分配内存的情况下增加大小。 这是更常用的列表集合。

散 列

哈希是查找,您可以在其中为列表中的每个项目提供一个"键",该键将在以后用于检索它。 将哈希视为表索引,您可以在其中提出诸如"我将通过此字符串值找到对象。 不允许使用重复的密钥。

  • 哈希表 - 一个基本的键值对映射,其功能类似于索引列表。

  • 字典 - 支持泛型类型并强制实施类型安全的哈希表。

队列

队列控制如何访问列表中的项目。 您通常从队列中向特定方向(从前面或后面)推送/弹出记录。 不用于中间的随机访问。

  • 堆栈 - 一个 LIFO(后进先出)列表,您可以在其中将记录推送/弹出到彼此之上。

  • 队列 - FIFO(先进先出)列表,您可以在其中将记录推送到顶部并从底部弹出。

  • 列表可以保存重复的对象

  • ArrayList只是为了与不存在IList的旧版本的框架兼容。

  • 字典用于存储键/值对。不能有重复的密钥。

  • 哈希表基本上是一个列表,不可能重复(在某些情况下性能更好)

  • 堆栈按添加对象的顺序(通过Push())存储对象,当您检索对象(通过Pop())时,该对象将以LIFO方式从堆栈中删除。

  • 队列与堆栈非常相似,只是它是 FIFO。

以下是它们的一些用途。

清单

如果你只想要一个清单,不关心任何重复,即人名单、购物清单、生活中要做的事情清单。

队列:例如,

如果要模拟队列,则在医院中,您有一个队列和优先队列(在急诊室)。分诊将确定谁处于危急状态并需要接受治疗。

另一个例子是购物队列,排队的第一个人"通常"是第一个结账的人。

堆栈:在您的内部存储器中使用,用于在将值传递给函数/方法时推送和弹出值。

另一个有趣的用途是,在视频游戏库存方法中,您可以捡起一个物品(推)到堆栈上,然后将一个项目(弹出)从堆栈中掉落。

哈希/字典:这些通常用于数据库,用于查找和索引。

根据您要模拟的内容,我确实同意其他人的观点,阅读数据结构很方便。一本书有帮助,但互联网也有丰富的信息。

最新更新