C# Hashtable (哈希表)

  • Hashtable

    Hashtable类表示键和值对的集合,这些键和值对基于键的哈希码进行组织。它使用键来访问集合中的元素。当您需要使用key访问元素时,可以使用哈希表,并且可以标识有用的键值。哈希表中的每个项目都有一个键/值对。该键用于访问集合中的项目。
  • Hashtable类的方法和属性

    Hashtable 类的方法和属性
    下表列出了 Hashtable 类的一些常用属性-
    属性 功能
    Count 获取哈希表中包含的键和值对的数量。
    IsFixedSize 获取一个值,该值指示Hashtable是否具有固定大小。
    IsReadOnly 获取一个值,该值指示Hashtable是否为只读。
    Item 获取或设置与指定键关联的值。
    Keys 获取一个ICollection,其中包含哈希表中的键。
    Values 获取一个ICollection,其中包含Hashtable中的值。
    下表列出了Hashtable类的一些常用方法-
    方法 功能
    public virtual void Add(object key, object value); 将具有指定键和值的元素添加到哈希表中。
    public virtual void Clear(); 从哈希表中删除所有元素。
    public virtual bool ContainsKey(object key); 确定哈希表是否包含特定键。
    public virtual bool ContainsValue(object value); 确定哈希表是否包含特定值。
    public virtual void Remove(object key); 从哈希表中删除具有指定键的元素。
  • 示例

    以下示例演示了概念-
    
    using System;
    using System.Collections;
    
    namespace CollectionsApplication {
       class Program {
          static void Main(string[] args) {
             Hashtable ht = new Hashtable();
             
             ht.Add("001", "Alex Moo");
             ht.Add("002", "Abida Rehman");
             ht.Add("003", "Joe Holzner");
             ht.Add("004", "Mausam Benazir Nur");
             ht.Add("005", "M. Amlan");
             ht.Add("006", "M. Arif");
             ht.Add("007", "Ritesh Saikia");
             
             if (ht.ContainsValue("Feng Lee")) {
                Console.WriteLine("This student name is already in the list");
             } else {
                ht.Add("008", "Feng Lee");
             }
             
             // Get a collection of the keys.
             ICollection key = ht.Keys;
             
             foreach (string k in key) {
                Console.WriteLine(k + ": " + ht[k]);
             }
             Console.ReadKey();
          }
       }
    }
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    001: Alex Moo
    002: Abida Rehman
    003: Joe Holzner
    004: Mausam Benazir Nur
    005: M. Amlan
    006: M. Arif
    007: Ritesh Saikia
    008: Feng Lee