纳金网

标题: Hashtable和Dictionary学习笔记 [打印本页]

作者: 狂风大尉    时间: 2014-10-29 23:52
标题: Hashtable和Dictionary学习笔记

单线程程序中推荐使用Dictionary,有泛型优势,且读取速度较快,容量利用更充分。

多线程程序中推荐使用Hashtable,默认的Hashtable允许单线程写入,多线程读取,对Hashtable进一步调用Synchronized()可以获得完全线程安全的类型,而Dictionary非线程安全,必须人为使用Lock语句进行保护,效率大减。
PS:在内聚函数中使用Dictionary,不会有多线程读取情况。在全局数据使用Hashtable,可能存在多线程读取。

Dictionary有按插入顺序排列数据的特性(注:但当调用Remove()删除过节点后顺序被打乱),因此在需要体现顺序的情景中使用Dictionary能获得一定方便。

Hashtable类和Dictionary<Of<(TKey, TValue)>>泛指类实现IDictionary接口。

对于值类型,特定类型(不包括Object)的Dictionary的性能优于Hashtable,这是因为Hashtable的元素属于Object类型,所以在存储或检索值类型时通常发生装箱和拆箱操作。

Hashtable中keyvalue键值对均为object类型,所以Hashable可以支持任何类型的keyvalue键值对。
PS:Hashtable在存储值类型时,考虑使用Dictionary

Dictionary使用索引器取值时,如果键不存在就会引发异常,可使用ContarnsKey()来判断,经常取值最好用TryGetValue方法来获取集合中对应的键值。


作者: HIDEOKOJIMA    时间: 2014-10-29 23:56
Thanks for sharing this one !
作者: hyui    时间: 2014-10-30 00:44
Good to learn
作者: waelink    时间: 2014-10-30 07:43
总是看得到两位老外热心的回帖。两位外兄是逢贴必回。
作者: justinluberg    时间: 2014-10-30 11:41
Unity中用多线程多吗?





欢迎光临 纳金网 (http://rs.narkii.com/club/) Powered by Discuz! X2.5