一、哈希表

哈希表和字典都是可以存储数据的一个容器,都是以键值对的方式来存储数据,一个键对应一个值,通过键和值来检索数据时是十分有效迅速的,举个简单的例子就是我们的手机的电话薄里面都是一个人对应一个电话号码,检索的时候只有找到键,也就是找到人名,就可以找到电话号码了。 字典的存储结构也是通过哈希表来实现的,所以两者存入数据的方式是一样的,但是两者在执行效率上还是有差别的。

存入数据不限制类型和数量,前提是导入命名空间using system.Collection
(1)存值时:
哈希表以键值对的形式存入数据每个键对应一个值),
存值时不允许重复(key不能重复),

(2)取值时:
键值对的排列具有**无序性**;
取值时找key(键),value(值)与key对应;
显示数据要用foreach循环,foreach从开始循环到结束,中间不会停下。

找不到返回null

需要拆箱装箱所以比dictionary慢

所有成员都是线程安全的

不是一个泛型类型

二、字典

(1) 和哈希表相似之处:
Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值)
键必须是唯一的,而值不需要唯一的.

(2) 和哈希表的不同之处:
键和值的类型取决于定义字典时的设置类型。
通过一个键读取一个值的时间是接近O(1)
键值对之间的偏序可以不定义

找不到返回error

不拆箱,装箱所以比hashtable快

只有公共的静态成员都是线程安全的。

Dictionary 是一个泛型类型,这意味着我们可以使用它与任何数据类型。

三、总结

主要的区别是,哈希表使用多线程做,可以多线程读取,字典单线程读取

哈希表和字典在内容实现上比较相似,不同的是字典不需要装箱和拆箱操作,所以在添加数据时效率上高一点,但是在频繁调用数据时字典更快一些。

还有一张图,是关于arraylist与list,hashtable,dictionary四者的关系与不同的,C#视频里面老师画的图,展示给大家

在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐