C#中哈希表和字典的区别

C#中哈希表和字典的区别

在 C# 中,Dictionary 是一个通用集合,通常用于存储键/值对。 字典在 System.Collection.Generics 命名空间下定义。 它本质上是动态的,意味着字典的大小根据需要而增长。

示例:

// C# program to illustrate Dictionary
using System;
using System.Collections.Generic;

class GeekdocsDemo {

    // 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#

Hashtable 是基于键的哈希码排列的键/值对的集合。 或者换句话说,哈希表用于创建使用哈希表进行存储的集合。 它是在 System.Collections 命名空间中定义的非泛型集合。 在 Hashtable 中,只要在 Hashtable 中用作键,键对象就必须是不可变的。

示例:

// C# program to illustrate a hashtable
using System;
using System.Collections;

class GeekdocsDemo {

    // 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", "Geekdocsbai Geekdocsbai");

        foreach(DictionaryEntry element in my_hashtable)
        {
            Console.WriteLine("Key:- {0} and Value:- {1} ", element.Key, element.Value);
        }
    }
}

运行结果如下:

Key:- A3 and Value:- Geekdocsbai Geekdocsbai 
Key:- A2 and Value:- to 
Key:- A1 and Value:- Welcome

哈希表与字典区别

哈希表 字典
Hashtable 是一个非泛型集合。 字典是一个通用集合。
Hashtable 在 System.Collections 命名空间下定义。 字典在 System.Collections.Generic 命名空间下定义。
在 Hashtable 中,可以存储相同类型或不同类型的键/值对。 Dictionary 中,可以存储相同类型的键/值对。
在 Hashtable 中,不需要指定 key 和 value 的类型。 在 Dictionary 中,必须指定键和值的类型。
由于装箱/拆箱,数据检索比字典慢。 由于没有装箱/拆箱,数据检索比 Hashtable 快。
在 Hashtable 中,如果尝试访问给定 Hashtable 中不存在的键,那么它将给出 null 值。 Dictionary 中,如果尝试访问给定 Dictionary 中不存在的键,则会出错。
它是线程安全的。 它也是线程安全的,但仅适用于公共静态成员。
它不维护存储值的顺序。 它始终保持存储值的顺序。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程