首页 > 其他分享 >Hashtable和Dictionary 的区别

Hashtable和Dictionary 的区别

时间:2023-03-14 17:24:36浏览次数:30  
标签:存储 Dictionary 区别 Hashtable key 使用 多线程

Hashtable和Dictionary都是.Net下的表示键值对的集合,那么我们在使用中该选择Hashtable还是Dictionary?下边我们看看他们之间的区别:

1、Dictionary<K,V>在使用中是顺序存储的,而Hashtable由于使用的是哈希算法进行数据存储,是无序的。

2、Dictionary的key和value是泛型存储,Hashtable的key和value都是object

3、Dictionary是泛型存储,不需要进行类型转换,Hashtable由于使用object,在存储或者读取值时都需要进行类型转换,所以比较耗时

4、单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分。多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减。

5、在通过代码测试的时候发现key是整数型Dictionary的效率比Hashtable快,如果key是字符串型,Dictionary的效率没有Hashtable快。

对于如何进行选择,个人倾向于使用Dictionary,原因是:

1、Dictionary是可排序的,Hashtable如果想排序还需要采用别的方式进行

2、Dictionary有泛型优势,效率要高

原文链接:https://blog.csdn.net/zhuhaiuser/article/details/127843371

 

标签:存储,Dictionary,区别,Hashtable,key,使用,多线程
From: https://www.cnblogs.com/IBPM/p/17215629.html

相关文章

  • Swift 中的static 和 class 关键字使用及区别
    在Swift中,static和class关键字都可以用来修饰类的属性和方法,但它们之间有三个主要的区别:继承性:使用class修饰的属性和方法可以被子类重写,而使用static修饰的属......
  • Spring中的单例和多例的区别
    Spring中的单例和多例的区别https://blog.csdn.net/qq_41369135/article/details/1241034271,什么是单例和多例单例:所有请求用同一个对象来处理。通过单例模式,可以保证......
  • 什么是寄存器和存储器?寄存器与存储器有何区别?
    中央处理器CPU是单片机的核心,主要用来解译单片机指令以及处理计算机数据,内部结构大致可以分为控制单元、逻辑运算单元和存储单元三个部分,存储器和寄存器在计算机中起着不可......
  • var和let的区别
    变量声明let是ES6标准里的新增语法,var是老语法,今后尽量使用letlet和var的区别var缺点多,值得一提的有两点var会声明提升,导致语法混乱值得注意的是声明提升会受......
  • rails header 传参数开发环境正式环境区别
    rails开发环境api传递access_token参数  在controller用 request.headers["HTTP_ACCESS_TOKEN"]可获取到值。但是在生产环境却获取不到值了。原因是生产环境head......
  • 电子行业干货:SMT、PCBA、PCB的区别和联系
    电子行业的新人,经常会将PCBA、SMT、PCB这三个完全不同的东西混淆,今天就通过简单明了的语言来谈谈PCBA、SMT、PCB三者之间区别与联系—————————————————⭐PC......
  • TCP跟HTTP的区别
    TCP跟HTTP的区别https://wenku.baidu.com/view/ea7200315c0e7cd184254b35eefdc8d376ee14d8.html?wkts=1678703969456&bdQuery=try+catch+finally+%E9%9D%A2%E8%AF%95%E9%A......
  • sql中varchar和nvarchar的区别,汉字前面加N
    参考:https://www.cnblogs.com/net5x/articles/9592295.htmlhttps://blog.csdn.net/qq_42692386/article/details/108148694     ......
  • 简述HTTP1.0,1.1,2.0,3.0的主要区别以及QUIC协议
    HTTP/1.0(构建可拓展性)请求中新增协议版本信息引入HTTP头概念响应中新增状态码默认使用短连接:浏览器每使用一个静态资源就会建立连接直到任务结束中断连接HTTP/1.1......
  • ==和equals的区别
    一、八大基本数据类型和引用类型1.1八大基本数据类型1.整数类型:byte、short、int、long2.小数类型:float、double3.字符类型:char4.布尔类型:boolean1.2引用类型类、......