我试图弄清楚什么时候以及为什么要使用字典或哈希表。我在这里做了一些搜索,发现人们在谈论Dictionary的一般优势,我完全同意这一点,它带来了装箱和拆箱的优势,从而获得了轻微的性能增益。
但我也读过字典不会总是按照插入的顺序返回对象,事情是有序的。就像哈希表一样。据我所知,这导致哈希表在某些情况下要快得多。
我的问题是,这些情况可能是什么?我上面的假设是错的吗?你会在什么情况下选择一个而不是另一个,(是的,最后一个有点模棱两可)。
我试图弄清楚什么时候以及为什么要使用字典或哈希表。我在这里做了一些搜索,发现人们在谈论Dictionary的一般优势,我完全同意这一点,它带来了装箱和拆箱的优势,从而获得了轻微的性能增益。
但我也读过字典不会总是按照插入的顺序返回对象,事情是有序的。就像哈希表一样。据我所知,这导致哈希表在某些情况下要快得多。
我的问题是,这些情况可能是什么?我上面的假设是错的吗?你会在什么情况下选择一个而不是另一个,(是的,最后一个有点模棱两可)。
当前回答
如果你关心读取,它总是按照插入到Dictionary中的顺序返回对象,你可以看看
OrderedDictionary—值可以通过整数索引访问(按添加项的顺序) SortedDictionary -项目自动排序
其他回答
哈希表和字典的区别
字典:
如果我们试图找到一个不存在的键,Dictionary将返回错误。 字典比哈希表快,因为没有装箱和拆箱。 Dictionary是一种泛型类型,这意味着我们可以将它用于任何数据类型。
散列表:
如果我们试图找到一个不存在的键,哈希表返回null。 哈希表比字典慢,因为它需要装箱和拆箱。 哈希表不是泛型类型,
另一个重要的区别是Hashtable类型同时支持无锁的多个读取器和单个写入器,而Dictionary则不支持。
如果你关心读取,它总是按照插入到Dictionary中的顺序返回对象,你可以看看
OrderedDictionary—值可以通过整数索引访问(按添加项的顺序) SortedDictionary -项目自动排序
我猜这对你来说已经毫无意义了。只是为了供路过的人参考
性能测试——SortedList vs. SortedDictionary vs. Dictionary vs. Hashtable
内存分配:
插入所用时间:
项目搜索时间:
字典比哈希表快,因为字典是泛型强类型。哈希表比较慢,因为它将对象作为数据类型,导致装箱和拆箱。