C# 列表与字典(哈希表)
这可能是一个愚蠢的问题,但我读到的是C# 列表与字典(哈希表),c#,.net,C#,.net,这可能是一个愚蠢的问题,但我读到的是哈希表和字典比列表快,因为它们用键索引项目 我知道列表或数组用于无值元素,而字典用于有值元素。因此,我认为拥有一个字典可能是明智的,它的值是您需要的一个键,并且它们的值都相等 更新: 根据评论,我认为我需要的是一个哈希集。这涉及到它们的性能。您的语句“列表或数组用于不带值的元素,字典用于带值的元素”严格来说不是真的 更准确地说,列表是元素的集合,哈希表或字典是元素的集合以及用于访问每个元素的唯一键 对于包含极少数元素的集合,或者只需要访问整个集合而不需要访问集
哈希表
和字典
比列表快,因为它们用键索引项目
我知道列表
或数组
用于无值元素,而字典
用于有值元素。因此,我认为拥有一个字典
可能是明智的,它的值是您需要的一个键,并且它们的值都相等
更新:
根据评论,我认为我需要的是一个哈希集。这涉及到它们的性能。您的语句“列表或数组用于不带值的元素,字典用于带值的元素”严格来说不是真的
更准确地说,列表是元素的集合,哈希表或字典是元素的集合以及用于访问每个元素的唯一键
对于包含极少数元素的集合,或者只需要访问整个集合而不需要访问集合的单个元素时,请使用列表
当集合较大和/或需要查找/访问集合的单个成员时,请使用哈希表或字典。字典/哈希表与列表/数组相比也有一些缺点:
- 您必须在每次查找时计算对象的哈希值李>
- 对于小集合,遍历数组可能比计算该哈希更快,特别是因为哈希不能保证是唯一的1李>
- 他们不太擅长遍历项目列表
- 它们不太擅长存储重复的条目(有时您合理地希望一个值在数组中多次显示)
- 有时,类型没有与之关联的好键
使用适合情况的工具。有时,这将是一个列表或数组。有时它会是一本字典。您几乎不应该再使用哈希表了(如果您真的不知道存储的是什么类型的话,最好使用字典)
1它通常是唯一的,但由于存在较小的冲突可能性,因此集合必须在计算哈希值后检查存储桶。“更快”取决于您需要它们做什么
a.net >代码> list <代码>只是一个连续内存的板(这不是一个链表),这使得顺序访问非常有效(特别是当考虑到缓存和预取的现代CPU的影响)或“随机”以已知的<强>整数< /强>索引时。搜索或插入元素(特别是在中间)-不太多
Dictionary
是一种关联数据结构-一个键可以是任何可散列的(不仅仅是整数索引),但元素没有以“有意义”的方式排序,并且通过已知键的访问速度不如List
的整数索引快
因此,为这项工作选择合适的工具。哈希表和字典比列表快。
。取决于您对它们所做的操作。A将提供您使用字典和使用键(而不是值)所考虑的功能。问题是它们必须是唯一的,但是如果使用Dictionray
“您需要的值作为键”
这将无法实现,如果您有重复的值