zoukankan      html  css  js  c++  java
  • 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不允许出现重复对象。

  • 相关阅读:
    01点睛Spring MVC 4.1-搭建环境
    18点睛Spring4.1-Meta Annotation
    17点睛Spring4.1-@Conditional
    16点睛Spring4.1-TaskScheduler
    15点睛Spring4.1-TaskExecutor
    Zabbix4.0.3解决中文乱码
    A10映射方法
    源码安装zabbix_agent4.0.3
    单机部署redis5.0集群环境
    zabbix系列之九——添加钉钉告警
  • 原文地址:https://www.cnblogs.com/HansZimmer/p/14338550.html
Copyright © 2011-2022 走看看