我们可以使用其中任何一个(包括List,ArrayList,Dictionary,Hashtable,Stack,Queue)来保存值或将对其他对象的引用保存为集合。
但是,我的问题是在什么时候使用?
答案 0 :(得分:96)
列表允许重复项,可以通过索引访问,并支持线性遍历。
ArrayList - 基于数组的列表,不支持泛型类型。它不强制实施类型安全,通常应避免使用。
列表 - 支持泛型类型并强制执行类型安全的数组列表。由于它是非连续的,因此它可以增大,而无需为整个列表重新分配内存。这是更常用的列表集合。
哈希是查找,您可以在列表中为列表中的每个项目提供一个“密钥”,稍后将使用该密钥进行检索。想象一个像表索引这样的哈希,你可以在这里提出问题,“我将通过这个字符串值找到这个对象。不允许重复键。” p>
HashTable - 一个基本的键值对映射,其功能类似于索引列表。
字典 - 支持泛型类型并强制执行类型安全的哈希表。
队列控制如何访问列表中的项目。您通常从特定方向(从前面或后面)推送/弹出队列中的记录。不用于中间的随机访问。
堆叠 - 一个LIFO(后进先出)列表,您可以在其中推送/弹出记录。
队列 - 一个FIFO(先进先出)列表,您可以将记录放在顶部,然后将其从底部弹出。
答案 1 :(得分:11)
答案 2 :(得分:2)
以下是它们的一些用途。
列表:如果您只想要一个列表而不关心任何重复项,即人员列表,购物清单,生活中要做的事情列表。
队列:例如,如果您想模拟队列,在医院中您有队列和优先级队列(在急诊室)。分诊将决定谁处于危急状态并需要接受治疗。
另一个例子是购物队列,第一个排队的人通常是第一个结帐的人。
堆栈:在内部存储器中用于在将值传递给函数/方法时推送和弹出值。
另一个有趣的用途是,在视频游戏库存方法中,您可以在堆栈中拾取项目(推送),并将项目(弹出)从堆栈中删除。
哈希/词典:这些通常用于数据库,用于查找和索引。
根据您想要模拟的内容,我同意其他人的观点,阅读数据结构非常方便。一本书有帮助,但互联网也有丰富的信息。