什么是哈希表,简单明了的说一下他的功能,用途,怎么使用?谢谢 !一会儿结分

解决方案 »

  1.   

    using System;
    using System.Collections;namespace ConsoleApplication1
    {
    /// <summary>
    /// DictionaryDemo 的摘要说明。
    /// </summary>
    public class DictionaryDemo
    {
    public DictionaryDemo() {} static public void Test1() {
    // 创建一个哈希表(Hashtable)
    Hashtable ht = new Hashtable();
    // 添加一些 (key,value) 组合
    ht.Add("test1", "this is a bag");
    ht.Add("test2", new int[] {1, 2}); string s = (string) ht["test1"];
    Console.WriteLine(s);
    int[] arr = (int[]) ht["test2"];
    foreach (int i in arr) {
    Console.WriteLine(i);
    }

    // 判断是否包含某个 key
    Console.WriteLine(ht.ContainsKey("test2"));
    // 判断是否包含某个 value
    Console.WriteLine(ht.ContainsValue("this is a bag")); /* key 可以用任意类型,但这些类型必须重写了 System.Object.GetHashCode
     * 以及 System.Object.Equals
     * 所有的基类型都实现了这些,可以安全的用作 key.
     * 
     * System.Object.GetHashCode() 方法返回一个数值, 这个数值是 CLR 内部用来
     * 识别一个对象的。如果两个 hash code 相同,则表明他们指向同样的对象。
     */
    object a = new ArrayList();
    object b = a;
    if (a.GetHashCode() == b.GetHashCode()) {
    Console.WriteLine("a.GetHashCode()==b.GetHashCode()=" + a.GetHashCode());
    }
    ht.Add("a", 1);
    /* 如果向 Hashtable 中添加已有的键,则会抛出一个 ArgumentException 异常。
     * 如下所示:*/
    //ht.Add("a", 2); // Hashtable 提供了 Keys, Values 集合。这两个集合都是 ICollection 类型的
    Console.WriteLine("keys in hash table:");
    foreach (string key in ht.Keys) {
    Console.WriteLine(key);
    } /* Hashtable 继承自 IEnumerable, 所以可以用 IEnumerable.GetEnumerator() 方法
     * 获取 enumerator. enumerator 用 System.Collections.DictionaryEntry 类型
     * 来处理集合的值。这种类型允许你访问相关的 key 和 value. 例: */
    foreach (DictionaryEntry entry in ht) {
    Console.WriteLine(entry.Key + ":" + entry.Value);
    } /* 也可以通过获得一个 IDictionaryEnumerator 类型的 enumerator 类枚举。
     * IDictionaryEnumerator 除了实现 IEnumerator 的所有方法外,还增加了
     * Key, Value, DictionaryValue 三个属性,以方便访问集合的值。例:
     */
    IDictionaryEnumerator e = ht.GetEnumerator();
    while (e.MoveNext()) {
    Console.WriteLine(e.Key + ":" + e.Value);
    } Console.ReadLine();
    }
    }
    }
      

  2.   

    在数据结构中的定义是:根据设定的哈希函数H(key)和处理冲突的方法将一组关键字映象到一个有限的连续的地址集(区间)上,并以关键字在地址集中的“象”作为记录在表中的存储位置,这种表便称为哈希表,这一映象过程称为哈希造表或散列,所得存储位置称哈希地址或散列地址
    在.NET中可以理解成一个线性表,里面存放的是一个对应关系,一般是键值和Value值的对应
      

  3.   

    http://218.27.204.17/aspnet/a_user.aspx