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有泛型优势,效率要高

Hashtable和Dictionary 的区别相关推荐

  1. 聊聊C# 中HashTable与Dictionary的区别说明

    哈希表(HashTable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中ke ...

  2. 转载 hashtable和dictionary的区别

    1:单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分. 2:多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程 ...

  3. HashTable、HashSet和Dictionary的区别

    为什么80%的码农都做不了架构师?>>>    1.HashTable 哈希表(HashTable)表示键/值对的集合.在.NET Framework中,Hashtable是Syst ...

  4. hashset hastable dictionary concurrentdictionary区别

    hashset hastable dictionary concurrentdictionary区别 1.HashTable 哈希表(HashTable)表示键/值对的集合.在.NET Framewo ...

  5. C#中字典集合HashTable、Dictionary、ConcurrentDictionary三者区别

    C#中HashTable.Dictionary.ConcurrentDictionar三者都表示键/值对的集合,但是到底有什么区别,下面详细介绍 一.HashTable HashTable表示键/值对 ...

  6. C# Hashtable和Dictionary区别

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

  7. HashTable和HashMap的区别详解

    HashTable和HashMap的区别详解 一.HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同 ...

  8. ArrayList与LinkedList、Vector的区别 HashMap与HashTable、HashSet的区别

    一.ArrayList 和 LinkedList区别: (1)两者都是线程不安全,都实现了Collection接口. (2)数据结构:ArrayList是基于动态数组的数据结构,LinkedList是 ...

  9. C#常见容器ArrayList、List、HashSet、Hashtable 、Dictionary、Stack、Queue

    一.ArrayList.List< T >列表和HashSet< T >哈希集 1.简单介绍及区别: 命名空间 System.Collections:ArrayList Sys ...

最新文章

  1. AD上删除了Exchange容器,再重装时报'找不到企业组织容器
  2. Android人脸支付研究,智能手机上人脸支付系统的设计与实现
  3. 四种常见的激活函数画图及简单改造
  4. nginx 超时时间_我眼中的 Nginx(四):是什么让你的 Nginx 服务退出这么慢?
  5. 关于电商你应该知道的!!!(深度好文)
  6. YARN执行作业报错Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.
  7. Linux tree命令以树形结构显示文件目录结构
  8. ubuntu下安装kde Plasma
  9. 使用 mitmproxy + python 做拦截代理
  10. 遥感图像数据类型的区别
  11. kali linux 模板文件夹,详解kali linux 常用文件与指令路径
  12. python出现Unresolved import:库名,已解决
  13. 算法总结之 数组的partition调整
  14. python 栈和队列_python实现栈和队列
  15. HashMap和LinkedHashMap的遍历和插入顺序
  16. atitit.故障排除--- 当前命令发生了严重错误。应放弃任何可能产生的结果sql server 2008
  17. 无码间干扰,升余弦滤波器,非线性失真
  18. Eclipse —— 官网下载地址
  19. antd select show-search搜索时 拼音首字母匹配汉字模糊查询
  20. 实现计算机系统的资源共享,实现多操作系统计算机的资源共享.pdf

热门文章

  1. Yeslab现任明教教主BT5 2011第一天明文共享部分
  2. js将连接生成二维码,并转为图片
  3. dejavu sans_新的Google徽标真的看起来像Comic Sans吗?
  4. java事务传播机制事例_Spring事务传播机制
  5. 日常生活小常识,你知道多少呢?
  6. php继承类如何触发父类中的构造函数,PHP 中类的继承和构造函数
  7. python程序文件的扩展名称-Python源代码程序编译后的文件扩展名为( )。_学小易找答案...
  8. 【English】5.14
  9. hdu 5115 Dire Wolf 恐狼先锋
  10. 误改了IP地址,怎么改回来