Jam*_*eet 2 c# dictionary hashtable list
我有两个问题.我想知道在C#库中是否有一个简单的类来存储值对而不是一个,这样我就可以在列表的同一节点中存储一个类和一个整数.我认为最简单的方法是创建一个容器类,但每次都是额外的工作.我想知道我是否应该这样做.我知道在.NET的更高版本(我使用的是3.5)中,我可以存储有元组,但这对我来说是不可用的.
我想更大的问题是使用字典存储整数类映射的内存缺点是什么,即使我不需要在O(1)中访问并且只能搜索列表?哈希表的最小大小是多少?我应该制作我需要的包装类吗?
如果你需要存储一个无序列表{integer, value}
,那么我建议你创建包装类.如果你需要一个数据结构,在其中您可以查找integer
得到value
(或者,查找value
得到integer
),那么我会建议一本字典.
List<Tuple<T1, T2>>
(或List<KeyValuePair<T1, T2>>
)vs 的决定Dictionary<T1, T2>
很大程度上取决于你想用它做什么.
如果你要存储信息然后迭代它,而不需要根据特定的键值进行频繁的查找,那么a List
可能就是你想要的.根据如何你要使用它,一个LinkedList
可能会更好-稍高的内存开销,更快的内容操作(添加/删除)操作.
另一方面,如果您将主要使用第一个值作为频繁查找的键,则a Dictionary
专门为此目的而设计.键值搜索和比较得到了显着改善,因此如果您对键做了很多事情并且列表很大,则词典会给您带来很大的速度提升.
数据大小对决策很重要.如果你谈论的是几百件或更少,那List
可能就好了.在这一点之上,查找时间可能会对执行时间产生更大的影响,因此Dictionary
可能更值得.
没有严格的规则.每个用例都不同,因此您必须平衡您的需求与开销.