在C#中, Dictionary是通用集合, 通常用于存储键/值对。字典的定义如下System.Collection.Generics命名空间。它本质上是动态的, 这意味着字典的大小会根据需要而增加。
例子:
//C# program to illustrate Dictionary
using System;
using System.Collections.Generic;
class GFG {
//Main Method
static public void Main()
{
//Creating a dictionary
//using Dictionary<TKey, TValue> class
Dictionary<string , string> My_dict =
new Dictionary<string , string>();
//Adding key/value pairs in the Dictionary
//Using Add() method
My_dict.Add( "a.01" , "C" );
My_dict.Add( "a.02" , "C++" );
My_dict.Add( "a.03" , "C#" );
foreach (KeyValuePair<string , string> element in My_dict)
{
Console.WriteLine( "Key:- {0} and Value:- {1}" , element.Key, element.Value);
}
}
}
输出如下:
Key:- a.01 and Value:- C
Key:- a.02 and Value:- C++
Key:- a.03 and Value:- C#
哈希表是基于键的哈希码排列的键/值对的集合。换句话说, 哈希表用于创建使用哈希表进行存储的集合。这是非通用类型的集合, 在系统集合命名空间。在哈希表中, 键对象必须是不可变的, 只要它们在哈希表中用作键即可。
例子:
//C# program to illustrate a hashtable
using System;
using System.Collections;
class GFG {
//Main method
static public void Main()
{
//Create a hashtable
//Using Hashtable class
Hashtable my_hashtable = new Hashtable();
//Adding key/value pair in the hashtable
//Using Add() method
my_hashtable.Add( "A1" , "Welcome" );
my_hashtable.Add( "A2" , "to" );
my_hashtable.Add( "A3" , "srcmini" );
foreach (DictionaryEntry element in my_hashtable)
{
Console.WriteLine( "Key:- {0} and Value:- {1} " , element.Key, element.Value);
}
}
}
输出如下:
Key:- A3 and Value:- srcmini
Key:- A2 and Value:- to
Key:- A1 and Value:- Welcome
哈希表与字典
哈希表 | 字典 |
---|---|
哈希表是一个非泛型集合。 | 字典是通用集合。 |
哈希表在System.Collections命名空间下定义。 | 字典在System.Collections.Generic命名空间下定义。 |
在哈希表中, 你可以存储相同类型或不同类型的键/值对。 | 在字典中, 你可以存储相同类型的键/值对。 |
在哈希表中, 无需指定键和值的类型。 | 在字典中, 你必须指定键和值的类型。 |
由于装箱/拆箱, 数据检索比字典慢。 | 由于没有装箱/拆箱, 数据检索比哈希表更快。 |
在哈希表中, 如果你尝试访问给定哈希表中不存在的键, 则它将提供空值。 | 在”词典”中, 如果你尝试访问给定词典中不存在的键, 则会出现错误。 |
这是线程安全的。 | 它也是线程安全的, 但仅适用于公共静态成员。 |
它不会保持存储值的顺序。 | 它始终保持存储值的顺序。 |
评论前必须登录!
注册