hashtable,dictionary 从原理上说说有什么异同,哪个性能高一些
dictionary只能存入定义时指定的类型,而且不像hashtable会把类型转换成object,存取起来比前者方便,效率更高,因为不需要转换类型,所以不会出现hashtable里的转换类型错误而报出程序异常.
简单点说在 hashtable所有的对象基于HASH算法管理,但它是无类型信息的都只是一种类型:object,所以你可能需要进行一些类型转换的操作,即浪费时间又有可能出错。而且对于int,float这些值类型还需要进行装箱等操作,非常耗时。
对于Dict <TKey,TValue>是由CLR支持泛型操作,速度快,没有类型转换操作,即完全是类型安全的。
由于 Hashtable 和 Dictionary 同时存在, 在使用场景上必然存在选择性, 并不任何时刻都能相互替代.
[1] 单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分.
[2] 多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减.
[3] Dictionary 有按插入顺序排列数据的特性 (注: 但当调用 Remove() 删除过节点后顺序被打乱), 因此在需要体现顺序的情境中使用 Dictionary 能获得一定方便.
基本上是Dictionary 性能高些
转载于:https://www.cnblogs.com/vihone/archive/2009/08/11/1543554.html
hashtable,dictionary 从原理上说说有什么异同,哪个性能高一些相关推荐
- 大白话聊聊 Kafka 的架构原理和网络设计,它的性能高在什么地方?
一.Kafka基础 消息系统的作用 应该大部分小伙伴都清楚,用机油装箱举个例子 所以消息系统就是如上图我们所说的仓库,能在中间过程作为缓存,并且实现解耦合的作用. 引入一个场景,我们知道中国移动,中国 ...
- Hashtable Dictionary的使用
要了解C#中Hashtable Dictionary的使用,我们先来看一个例子! using System; using System.Collections; namespace NoSortHas ...
- 【中级软考】计算能力足够强大,所有加密算法原理上都会被破解吗?
结论: 是的 但: 在信息技术领域,为达成既定目标选择做某事或不做某事.选择走某路线或不走某路线,性价比是一个极其重要的考虑因素.不做不等于落后. 引用文章:计算能力足够强大,所有加密算法原理上都会被 ...
- 从原理上理解MySQL的优化建议
概述 自从学习 MySQL 以来,我们一直听到或者看到很多优化建议,比如说不要用 select * 查询,用什么字段就查什么字段:建议用自增主键来作为表的主键,等等.这些建议听得很多感觉都成了 MyS ...
- 经济学原理上中国故事2019尔雅满分答案
经济学原理上中国故事2019尔雅满分答案 1.1为什么要学习经济学(上) 1 [单选题]经济学最好的定义是对(A)的研究. A.社会如何管理其稀缺资源 B.如何按最盈利的方式经营企业 C.如何预测通货 ...
- 【红外相机和普通网络摄像头夜视功能在夜视原理上的区别)】
红外相机和普通网络摄像头夜视功能在夜视原理上的区别 提出问题 红外相机 网络摄像头的夜视功能 总结 提出问题 少则上万多则几十万红外相机夜视效果也只能看到物体或人体的轮廓特征,但是那些几十.几百块钱的 ...
- 第2课-OC对象原理上-1
第2课-OC对象原理上-1 [TOC] 1.1 alloc对象的指针地址和内存 首先我们看下面代码的执行 ZBPerson *p1 = [ZBPerson alloc]; ZBPerson *p2 = ...
- 【电气专业知识问答】问:电压互感器和电流互感器在作用和原理上有什么区别?
[电气专业知识问答] 问:电压互感器和电流互感器在作用和原理上有什么区别? 答:两者的主要区别是正常运行时工作状态不相同,表现为: (1)电流互感器二次可以短路,但不得开路,电压互感器二次可以开路,但 ...
- 计算能力足够强大,所有加密算法原理上都会被破解吗
转载自:http://blog.sina.com.cn/s/blog_185c43eee0102ypk1.html 苏盛辉 2018-06-29 1 引言 2018年5月28日,潘建伟教授在两院院 ...
最新文章
- 修改Linux系统时间
- 常用的方法论-NPS
- 蓝桥杯第七届国赛JAVA真题----七星填数
- mysqldump备份表中有大字段失败的排错过程
- LeetCode002-两数相加(Add Two Numbers)-Rust语言实现
- IDEA 设置护眼色RGB值
- apache伪静态把css 排除掉_(02)CSS 选择器详解 | CSS
- ValidateAntiForgeryToken的用途,解释和示例
- Linux中last的用法及参数,查看登陆系统用户的信息
- win7家庭版计算机桌面,win7家庭普通版如何显示桌面图标
- 双光耦开关电源电路图_双路输出回扫式开关电源电路图
- tp5 点击刷新验证码
- 2022年5款免费聊天机器人,帮助独立站降本增效
- java-php-python-ssm新生报到管理计算机毕业设计
- 对技术的态度/编程修养(上)
- 怎么用python编写程序计算标准差_python 标准差计算的实现(std)
- Linux、mysql密码初始化
- keras模型转TensorFlow模型-tensorrt UFF格式
- GG 数据初始化装载 说明 与 示例
- 网约车风云再起:“小窗口”和“大窗口”齐开
热门文章
- WebSpher 6.1 安装与应用
- GDB调试及其调试脚本的使用
- visio画uml类图添加自定义数据类型
- Python较为经典的53个Python库
- mysql optimizer_mysql 参数optimizer_switch
- 计算机的iscsi配置,PC端的iSCSI参数设置方法
- map转字符串数组中 php_js将map转换成数组
- python 画蜘蛛_如何学习 R 绘图?
- 开启php soap,php soap 开发文档
- c语言程序整数四则运算,c语言中三个整数随机的四则运算