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();

序号操作说明
1ht.Add(key,value)在ht中添加一个keyvalue键值对
2ht.Remove(key)在ht中去除某个keyvalue键值对
3ht.Clear();移除ht所有元素
4ht.Contains(key)判断并返回(bool)哈希表是否包含特定键key
5ht.ContainKey(key)判断并返回(bool)哈希表是否包含特定键key
6ht.ContainValue(value)判断并返回(bool)哈希表是否包含特定值value
7ht.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]);  //排序后输出
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值