C#中的Hashtable

1、别称:哈希表、键值对、关联数组

2、概述:
    (1)、用于处理和表现类似Key/Value的键值对
        (2)、key --- 可以是不同数据类型,但不能重名,必须满足 唯一性,同时它还区分大小写。通常用于快速查找,类似索引。
               value --- 用于存储对应key的值,
               二者均为object类型, 因此,Hashtable支持任何类型的key/value键值对。
        (3)、Hashtable中的元素存储在 DictionaryEntry对象中。

3、声明之前需引用命名空间: System.Collections
    Hashtable ht = new Hashtable();

4、添加方法:
    (1)Add(键,"值")
    (2)ht[键] = "值"
    用第二种方法,可能添加元素,也可能是重新赋值,取决于 “键”是否已经存在!

5、遍历方法:利用foreach循环
    (1)用DictionaryEntry对象 声明;
        foreach (DictionaryEntry myEntry in ht)
                {
                    Console.WriteLine("key键:{0}-----value值:{1}", myEntry.Key,myEntry.Value);
                }
    (2)用Object类声明
        foreach (object obj in ht.Keys)
                {
                    Console.WriteLine("key键:{0}-----value值:{1}", obj,ht[obj]);
                }
6、删除方法:
    Remove(Key键) ----- 删除指定元素
    Clear() ------ 清空所有元素

7、查找方法:(返回布尔值)
    ContainsKey ---- 按  键  查找
    ContainsValue ----  按  值  查找


8、演示代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;

namespace Hashtable演示
{
    class Program
    {
        static void Main(string[] args)
        {
            Hashtable ht = new Hashtable();
            ht.Add(1,"张三");
            ht.Add(true,"李四");
            ht.Add(false,"王五");
            ht[2] = "赵六";
            ht[true] = "我把李四覆盖了"; //重新赋值,因为已经存在key键 true
            //用object类声明
            foreach (object obj in ht.Keys)
            {
                Console.WriteLine("key键:{0}-----value值:{1}",obj,ht[obj]);
            }
            Console.WriteLine("====================================");
            //用DictionaryEntry类声明
            foreach (DictionaryEntry myEntry in ht)
            {
                Console.WriteLine("key键:{0}-----value值:{1}",myEntry.Key,myEntry.Value);
            }
            Console.WriteLine("====================================");
            //查找指定元素
            if (ht.ContainsKey(false))  //按 键 查找
            {
                Console.WriteLine("存在false键!");
            }
            else
            {
                Console.WriteLine("不存在false键!");
            }
            Console.WriteLine("");
            if (ht.ContainsValue("张三"))    //按 值 查找
            {
                Console.WriteLine("存在这个值");
            }
            else
            {
                Console.WriteLine("不存在这个值!");
            }
            //删除元素
            Console.WriteLine("");
            ht.Remove(false);
            Console.WriteLine("删除false键对应的值:王五");
            foreach (DictionaryEntry myEntry in ht)
            {
                Console.WriteLine("key键:{0}-----value值:{1}", myEntry.Key, myEntry.Value);
            }
            Console.WriteLine("");
           //清空所有元素
            ht.Clear(); 
            foreach (DictionaryEntry myEntry in ht)
            {
                Console.WriteLine("key键:{0}-----value值:{1}", myEntry.Key, myEntry.Value);
            }
            Console.WriteLine("哈哈,我把所有元素清空了!");
            Console.ReadKey();
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值