首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >List vs ArrayList vs Dictionary vs Hashtable vs Stack vs Queue?

List vs ArrayList vs Dictionary vs Hashtable vs Stack vs Queue?
EN

Stack Overflow用户
提问于 2012-08-10 20:55:11
回答 3查看 79.7K关注 0票数 66

我们可以使用其中的任何一个(包括列表、ArrayList、字典、哈希表、堆栈、队列)来保存值或将对其他对象的引用作为集合。

但是,我的问题是在什么情况下使用哪一个?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-10 21:03:55

列表

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

  • ArrayList -基于数组的列表,不支持泛型类型。它不强制类型安全,通常应该是avoided.
  • List -一个支持泛型类型并强制类型安全的数组列表。因为它不是连续的,所以它可以在大小上增长,而不需要为整个列表重新分配内存。这是更常用的列表集合。

哈希值

哈希是一种查找,在这种查找中,你给列表中的每一项一个“键”,这个键将在以后用来检索它。想象一个类似于表索引的散列,你可以问这样的问题:“我要通过这个字符串值找到这个对象。不允许重复键。”

  • HashTable -一个基本的键-值对映射,其功能类似于索引的list.
  • Dictionary -支持泛型类型并强制执行type-safety.

的哈希表

队列

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

后进先出(后进先出)列表,将记录推入/弹出到每个other.

  • Queue的顶部-先入先出(first in,first out)列表,将记录从上推到下。
票数 104
EN

Stack Overflow用户

发布于 2012-08-10 21:05:22

  • List可以保存重复的objects
  • ArrayList只是为了与旧版本的框架兼容,在旧版本的框架中,exist
  • Dictionary的IList不是用来存储键/值对的。你不能有重复的keys.
  • Hashtable基本上是一个没有重复可能性的列表(在一些scenarios)
  • Stack中,更好的性能是按照对象被添加的顺序存储它们(通过Push()),当你检索一个对象(通过Pop())时,它被从栈中从栈中移除,这与manner.
  • Queue非常类似,除了它是Push()
票数 13
EN

Stack Overflow用户

发布于 2012-08-10 21:17:04

下面是它们的一些用法。

list :,如果你只想要一个清单,而不关心任何重复的东西,比如人的清单,购物清单,生活中要做的事情的清单。

队列:如果您想要模拟一个队列,例如,在医院中,您有一个队列和优先级队列(在急诊科)。分诊将决定谁的情况危急,需要接受治疗。

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

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

另一个有趣的用途是,在视频游戏清单方法中,您可以将一个项目(push)放到堆栈中,然后将一个项目(pop)从堆栈中删除。

Hash/Dictionary:这些通常用在数据库中,用于查找和索引。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11902107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档