C# 哈希表(Hashtable)用法笔记

一、什么是Hashtable?

Hashtable 类代表了一系列基于键的哈希代码组织起来的键/值对。它使用键来访问集合中的元素。

当您使用键访问元素时,则使用哈希表,而且您可以识别一个有用的键值。哈希表中的每一项都有一个键/值对。键用于访问集合中的项目

二、Hashtable 的属性

1、Count 获取 Hashtable 中包含的键值对个数。

2、IsFixedSize   获取一个值,表示 Hashtable 是否具有固定大小。

3、IsReadOnly    获取一个值,表示 Hashtable 是否只读。

4、Item  获取或设置与指定的键相关的值。

5、Keys  获取一个 ICollection,包含 Hashtable 中的键。

6、Values    获取一个 ICollection,包含 Hashtable 中的值。

三、Hashtable 的方法

在C#中使用需要引用

using System.Collections;

using System.Collections.Generic;

这两个命名空间

1、  public virtual void Add( object key, object value );

用途: 向 Hashtable 添加一个带有指定的键和值的元素。

2、public virtual void Clear();

用途:从 Hashtable 中移除所有的元素。

3、public virtual bool ContainsKey( object key );

用途:判断 Hashtable 是否包含指定的键。

4、public virtual bool ContainsValue( object value );

用途:判断 Hashtable 是否包含指定的值。

5、public virtual void Remove( object key );

用途:从 Hashtable 中移除带有指定的键的元素。

四、HashTable的应用场景

1、某些数据会被高频率查询

2、数据量很大

3、查询字段包含字符串类型

4、数据类型不唯一

五、HashTable简单用法实例

class Program

    {

        static void Main(string[] args)

        {

            // 创建一个Hashtable实例

            Hashtable ht=new Hashtable();

  

            // 添加keyvalue键值对

            ht.Add("A","1");

            ht.Add("B","2");

            ht.Add("C","3");

            ht.Add("D","4");

  

            // 遍历哈希表只能用foreach来遍历,因为Hashtable不能用索引访问

            //遍历key

            foreach(Object item in ht.Keys)

            {

                Console.WriteLine((string)item);

            }

            //遍历value

            foreach(Object item in ht.Value)

            {

                 

                Console.WriteLine((string)item);

            }

 

 

            foreach (DictionaryEntry de in ht)

            {

                Console.WriteLine("Key -- {0}; Value --{1}.", de.Key, de.Value);

            }

  

 

            // 哈希表排序

            ArrayList akeys=new ArrayList(ht.Keys);

            akeys.Sort();

            foreach (string skey in akeys)

            {

                Console.WriteLine("{0, -15} {1, -15}", skey, ht[skey]);

  

            }

  

            // 判断哈希表是否包含特定键,其返回值为true或false

            if (ht.Contains("A"))

              Console.WriteLine(ht["A"]);

              

            // 给对应的键赋值

            ht["A"] ="你好";

  

            // 移除一个keyvalue键值对

            ht.Remove("C");

  

            // 遍历哈希表

            foreach (DictionaryEntry de in ht)

            {

                Console.WriteLine("Key -- {0}; Value --{1}.", de.Key, de.Value);

            }

         

            // 移除所有元素

            ht.Clear();

    

            // 此处将不会有任何输出

            Console.WriteLine(ht["A"]);

            Console.ReadKey();

        }

    }

 公众号:原文

posted @ 2017-07-11 12:50  天使不哭  阅读(518)  评论(0编辑  收藏  举报