C# HashTable Dictionary ConcurrentDictionary HashSet

今天是2021念的1月28号,时间荏苒,白驹过隙,仿佛2015年就是去年的事。

一:HashTable

     使用键值对Key-Vaule来保存数据,Key和Vaule都是Object类型,所以当在保存和遍历的时候会发生数据转换,将Object转换成业务所需的数据类型,

  那么会发生拆箱装箱操作,性能会降低。当遍历我们像遍历HashTable的时候,由于没有索引所以我们会用foreach来遍历而不使用for来循环。

  默认的HashTable是允许单线程写入,多线程读取。当调用Synchronized() 方法可以获得完全线程安全的类型。

二:Dictionary

  也是使用键值对来保存数据,Key和Value都是泛型指定确认类型的了,于是在效率上会比HashTable高。在.net 2.0时代,Dictionary属于非线程安全,

  需要使用lock锁来保证不被其他线程来抢占资源,那么效率也会大大降低。

三:ConcurrentDictionary

  为解决.net2.0中Dictionary的非线程安全,在.net4.0使用ConcurrentDictionary后不需要使用lock锁即可保证线程安全,在多个线程中添加数据也不会报错了。

三:HashSet

  是用来对集合间的操作时使用,比如需要得到集合与集合之间的交集差集并集。HashSet不允许出现重复对象。

posted @ 2021-01-28 10:49  超级驼鹿  阅读(128)  评论(0编辑  收藏  举报
/*