C# Hashtable 哈希表

转载至:Z&K的博客园

1 命名空间与继承关系

命名空间:System.Collections
继承关系:Object→Hashtable
表示根据键的哈希代码进行组织的键/值对的集合。

2 Hashtable(哈希表)简介

    在 .NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key-value的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对.

3 Hashtable特点

(1)某些数据会被高频率查询
(2)数据量大
(3)查询字段包含字符串类型
(4)数据类型不唯一

4 Hashtable基本操作

Hashtable ht = new Hashtable();

序号 操作 说明
1 ht.Add(key,value) 在ht中添加一个keyvalue键值对
2 ht.Remove(key) 在ht中去除某个keyvalue键值对
3 ht.Clear(); 移除ht所有元素
4 ht.Contains(key) 判断并返回(bool)哈希表是否包含特定键key
5 ht.ContainKey(key) 判断并返回(bool)哈希表是否包含特定键key
6 ht.ContainValue(value) 判断并返回(bool)哈希表是否包含特定值value
7 ht.Count 返回元素个数(int))

例子:

static void Main(string[] args)
{
      // 创建一个Hashtable实例
      Hashtable ht = new Hashtable();
      //添加两个键值对
      ht.Add("1", "a");
      ht.Add(2, "b");
      //遍历输出元素
      foreach (DictionaryEntry i in ht)
      {
           Console.WriteLine(i.Key + "   " + i.Value);
      }
      //是否包含某个键或值
      Console.WriteLine(ht.Contains(1));
      Console.WriteLine(ht.ContainsKey(1));
      Console.WriteLine(ht.ContainsValue("a"));
      Console.WriteLine(ht.Count);
      //删除元素
      ht.Remove("1");
      foreach (DictionaryEntry i in ht)
      {
          Console.WriteLine(i.Key + "   " + i.Value);
      }
      //当前元素个数
      Console.WriteLine(ht.Count);
      //清除所有元素
      ht.Clear();
      foreach (DictionaryEntry i in ht)
      {
           Console.WriteLine(i.Key + "   " + i.Value);
      }
      Console.WriteLine(ht.Count);
}

5 Hashtable的遍历

遍历分为:①Key遍历  ②value遍历  ③Key-value的遍历
示例如下:

static void Main(string[] args)
{
    // 创建一个Hashtable实例
    Hashtable ht = new Hashtable();
    //添加两个键值对
    ht.Add(1, "a");
    ht.Add(2, "b");
    ht.Add(3, "c");
    ht.Add(4, "d");
    //遍历key
    Console.WriteLine("key的遍历");
    foreach (int key in ht.Keys)
    {
         Console.WriteLine(key);
     }
     //遍历value
     Console.WriteLine("value的遍历");
     foreach (string value in ht.Values)
     {
          Console.WriteLine(value.ToString());
     }
     //遍历key-value
     Console.WriteLine("key-value的遍历");
     foreach (DictionaryEntry i in ht)
     {
          Console.WriteLine(i.Key + "   " + i.Value);
     }
}

6 使用多种数据类型的例子

    static Hashtable GetHashtable()
    {
      Hashtable hashtable = new Hashtable();
      hashtable.Add("名字", "小丽");
      hashtable.Add("年龄", 22);
      return hashtable;
    }

    static void Main()
    {
      Hashtable hashtable = GetHashtable();
      //使用强制类型转换
      string name = (string)hashtable["名字"];
      Console.WriteLine(name);
      int age = (int)hashtable["年龄"];
      Console.WriteLine(age);
    }

7 Hashtable的排序

对哈希表按key值重新排列的做法:

ArrayList akeys=new ArrayList(ht.Keys); 
akeys.Sort(); //按字母顺序进行排序
foreach(string key in akeys)
{
   Console.WriteLine(key + ": " + ht[key]);  //排序后输出
}

猜你喜欢

转载自blog.csdn.net/qq_29406323/article/details/86351672