哈希表和字典的区别

目录:

Anonim

主要区别 Hashtable 和 Dictionary 之间的区别在于 Hashtable 是弱类型数据结构,因此可以添加任何类型的键和值,而 Dictionary 是强类型数据结构,因此只能添加满足键和值指定数据类型的元素。

哈希表和字典是两种主要的数据结构。它们都可以将数据保存为键值对。 Hashtable 或 Dictionary 只能包含唯一键。程序员可以使用密钥查找或删除特定值。哈希表不是强类型的。因此,程序员可以将键值对的任何元素添加到哈希表中。另一方面,字典是强类型的。程序员应该指定键和值的数据类型。无法添加不满足给定数据类型的元素。例如,如果 Dictionary 具有泛型类型,则程序员只能添加具有 int 类型键和字符串类型值的元素。

字典、哈希表、数据结构

什么是通用数据类型

泛型数据类型是一种允许用户使用占位符定义类和方法的数据类型。 C# 等编译器可以在编译时用指定的数据类型替换占位符。它用于创建通用类和方法。在定义泛型类时,程序员应该使用尖括号 ()。这些括号将类或方法声明为泛型类型。

什么是哈希表

Hashtable 是一种实现关联数组抽象数据类型的数据结构,该结构可以将键映射到值。它不是通用数据类型。参考一段代码如下。

图 1:带有 Hashtable 的 C# 程序

在上面的程序中, numbers 是一个 Hashtable 类型的对象。键值对被添加到哈希表中。从语句 15 到 17,键是 int 类型,值是 string 类型。在语句 18 中,键和值是字符串。哈希表是一种每周类型的数据结构。因此,程序员可以向 Hashtable 添加任何类型的键和值。

图 2:HashTable 程序输出

程序的输出如上。 Hashtable 不会根据添加元素的顺序打印记录。因此,它不维护插入的顺序。

什么是字典

字典使用哈希表的概念。它是一种通用数据类型。请参考以下程序。 names 是一个 Dictionary 类型的对象。它具有用于存储键和值的特定数据类型。根据这个程序,泛型类型被定义为.因此,在向字典中添加元素时,键和值都应该是字符串类型。

图 3:带有字典的 C# 程序

添加到上述字典的所有元素都具有 String 类型的键值对。将键和值打印到控制台将给出类似于图 4 的输出。从 Dictionary 检索项目将按照添加元素的相同顺序打印记录。因此,它保持插入的顺序。

图 4:字典程序输出

总的来说,Dictionary 执行速度很快,但它不提供线程安全。

哈希表和字典的区别

定义

Hashtable 是一种实现关联数组抽象数据类型的数据结构,该结构可以将键映射到值。字典是一种基于 Hashtable 的数据结构,它根据键存储值。

添加元素

此外,Hashtable 是一种弱类型数据结构。因此,程序员可以将任何对象类型的键和值添加到 Hashtable 中。字典是强类型数据结构。 (

类型

此外,Hashtable 不是泛型,而 Dictionary 是泛型类型。

执行速度

另外,Hashtable有装箱和拆箱,Dictionary没有。字典消耗最少的内存并且执行速度比哈希表快。

检索元素

检索 Hashtable 中的元素不会保持插入的顺序。另一方面,从字典中检索元素会保持插入的顺序。

线程安全

示例语法

Hashtable ht = new Hashtable();

字典字典 = new Dictionary();。

结论

Hashtable 和 Dictionary 的区别在于,Hashtable 是弱类型数据结构,因此可以添加任何类型的键和值,而 Dictionary 是强类型数据结构,因此只能添加满足指定的元素键和值的数据类型。

参考:

1. “C# 哈希表类”。 www.tutorialspoint.com,Tutorials Point,2018 年 7 月 21 日,在此处提供。2。 “C# 哈希表。” C# 中的数据类型,教程老师。可用here.3。 “C# 字典——Javatpoint。” www.javatpoint.com,可在此处获得。

哈希表和字典的区别