HashTable、HashSet和Dictionary的区别
为什么80%的码农都做不了架构师?>>>
1.HashTable
哈希表(HashTable)表示键/值对的集合。在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key-value的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中key-value键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对,任何非 null 对象都可以用作键或值。
在哈希表中添加一个key/键值对:HashtableObject.Add(key,);
在哈希表中去除某个key/键值对:HashtableObject.Remove(key);
从哈希表中移除所有元素: HashtableObject.Clear();
判断哈希表是否包含特定键key: HashtableObject.Contains(key);
2.HashSet
HashSet<T>类主要是设计用来做高性能集运算的,例如对两个集合求交集、并集、差集等。集合中包含一组不重复出现且无特性顺序的元素,HashSet拒绝接受重复的对象。
HashSet<T>的一些特性如下:
a. HashSet<T>中的值不能重复且没有顺序。
b. HashSet<T>的容量会按需自动添加。
3.Dictionary
Dictionary表示键和值的集合。
Dictionary<string, string>是一个泛型
他本身有集合的功能有时候可以把它看成数组
他的结构是这样的:Dictionary<[key], [value]>
他的特点是存入对象是需要与[key]值一一对应的存入该泛型
通过某一个一定的[key]去找到对应的值
4.HashTable和Dictionary的区别:
(1).HashTable不支持泛型,而Dictionary支持泛型。
(2). Hashtable 的元素属于 Object 类型,所以在存储或检索值类型时通常发生装箱和拆箱的操作,所以你可能需要进行一些类型转换的操作,而且对于int,float这些值类型还需要进行装箱等操作,非常耗时。
(3).单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分。多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减。
原文地址:http://www.cnblogs.com/akwwl/p/3680376.html
转载于:https://my.oschina.net/wzzz/blog/423811
HashTable、HashSet和Dictionary的区别相关推荐
- hashset hastable dictionary concurrentdictionary区别
hashset hastable dictionary concurrentdictionary区别 1.HashTable 哈希表(HashTable)表示键/值对的集合.在.NET Framewo ...
- HashMap HashTable HashSet区别剖析
HashMap.HashSet.HashTable之间的区别是Java程序员的一个常见面试题目,在此仅以此博客记录,并深入源代码进行分析: 在分析之前,先将其区别列于下面 1:HashSet底层采用的 ...
- 转载 hashtable和dictionary的区别
1:单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分. 2:多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程 ...
- Hashtable TreeMap HashMap LinkedHashMap的区别
Hashtable TreeMap HashMap LinkedHashMap的区别 Hashtable TreeMap HashMap LinkedHashMap详解 Hashtable 1.内部存 ...
- HashSet 和 TreeSet的区别
HashSet 和 TreeSet的区别 HstSet和TreeSet详解 HashSet 内部是由哈希表(实际上是一个 HashMap 实例)支持的.它不保证 set 元素的迭代顺序. TreeSe ...
- 浅谈HashTable, HashMap, ConcurrentHashMap 之间的区别
大家好,今天为大家带来新的知识, HashTable, HashMap, ConcurrentHashMap 之间的区别 ...
- c#中Dictionary、ArrayList、Hashtable和数组 Array 的区别(转)
C# 集合类 Array Arraylist List Hashtable Dictionary Stack Queue 1.数组是固定大小的,不能伸缩.虽然System.Array.Resize这个 ...
- 浅析几种数据集合(Dictionary、ArrayList、Hashtable和Array)的区别
数组 Array: 数组是固定大小的,不能伸缩,要声明元素的类型. 数组可读可写不能声明只读数组:数组要有整数下标才能访问特定的元素 (强类型约束) ArrayList: 数组的复杂版本,动态数组类型 ...
- Hashtable和Dictionary 的区别
Hashtable和Dictionary都是.Net下的表示键值对的集合,那么我们在使用中该选择Hashtable还是Dictionary?下边我们看看他们之间的区别: 1.Dictionary< ...
最新文章
- Linux上实现ssh免密码登陆远程服务器
- 每日一皮:你们都是怎么解压的?
- Spring Cloud/Dubbo 应用无缝迁移到 Serverless 架构
- java io字符输出流_JAVA IO 字符输入流与输出流总结说明
- 计算机系统与环境,COMPUTERS ENVIRONMENT AND URBAN SYSTEMS《计算机、环境与城市系统》SSCI论文投稿_万维书刊网...
- Java集合系列---LinkedHashMap源码解析
- securerandom java_Java 随机数 Random VS SecureRandom
- PIX525-IPSEC-×××配置
- 如何通过修改注册表来限定Win10 PIN的最小位数
- 【Arduino 101】霍尔编码器(增量,正交)与起停式闭环控制
- PSV最实用游戏使用攻略
- 收款码在线生成系统源码 无限制 (web微信、QQ、支付宝三合一收款码)
- excel中用正则匹配_Excel 使用正则表达式提取数据
- OROCOS之KDL(1)—— windows环境搭建篇
- 微信加不了公众号服务器繁忙,微信公众号系统繁忙是怎么回事
- javaSE探赜索隐之三--<类与对象的爱恨情仇下>
- jquery 输入框失去焦点时 (blur)事件
- android 微信分身开发,【技巧】2021安卓手机微信分身方法
- 计算机科学职业位置,计算机专业的职业生涯规划范文
- oracle数据库字符集子集与超集对应关系表表