纳金网
标题:
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