Keep on going never give up.

Let's Go

C# 学习笔记(45)Hashtable键值对集合

C#Lonely2019-05-18 19:34:1647次0条

Hashtable

Hashtable是一个键值对集合,Hashtable 类实现了 IDictionary 接口,集合中的值都是以键值对的形式存取的。

C# 中的 Hashtable 称为哈希表,也称为散列表,在该集合中使用键值对(key/value)的形式存放值。换句话说,在 Hashtable 中存放了两个数组,一个数组用于存放 key 值,一个数组用于存放 value 值。此外,还提供了根据集合中元素的 key 值查找其对应的 value 值的方法。

在键值对集合当中,是根据键去找值的,键必须是唯一的,而值是可以重复的。

Hashtable 类提供的构造方法有很多,最常用的是无参数的构造方法,构造方法就不一一列出,有需要可自行查看。

Hashtable 类中常用的属性和方法

属性或方法 作用
Count 集合中存放的元素的实际个数
void Add(object key,object value) 向集合中添加元素
void Remove(object key) 根据指定的 key 值移除对应的集合元素
void Clear() 清空集合
ContainsKey (object key) 判断集合中是否包含指定 key 值的元素
ContainsValue(object value) 判断集合中是否包含指定 value 值的元素

Keys属性,是Hashtable的集合。Values属性,是Hashtable的集合;可以通过foreach遍历它的键集合和值集合。

如果要同时得到Hashtable中的键集合和值集合,在使用foreach遍历时,请将var关键字替换为DictionaryEntry,这样就能同时拿到键和值了。

键值对集合,如果得到键,可以使用 集合名[键名] 这样的索引方式获取对应的值。因为键值对集合不提供下标来访问,故这类集合不能通过for循环来遍历。

代码示例:

using System;
using System.Collections; //引用命名空间

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            //在键值对集合当中,是根据键去找值的。
            //注意:键值对集合当中,键必须是唯一的,而值是可以重复的。

            Hashtable ht = new Hashtable(); 

            //添加数据
            //方法一:键值对对象名.Add(键,值);
            ht.Add(0, "张三");
            ht.Add(1, '男');
            ht.Add(2, 18);
            ht.Add(true, "正确");
            ht.Add(false, "错误");

            //方法二:键值对对象名[键]=值;
            //如果这个集合里没有这个键,那么就会把这个键和值添加进去。如果这个集合里已经存在这个键了,则会把该键对应的值替换覆盖掉。
            ht[3] = "李四";
            ht[0] = "把张三覆盖!";

            //判断集合中是否包含该键
            if (ht.ContainsKey("abc")) //其Contains()方法最终也是调用这个方法实现的。ContainsValue(value)方法,是查询是否包含某个值。
            {
                Console.WriteLine("包含有abc键,不能再添加abc键了,因为键必须是唯一。");
            }
            else
            {
                Console.WriteLine("不包含有abc键,可以添加abc键。");
                ht.Add("abc", "ABC");
            }

            //移除集合中所有元素
            //ht.Clear();

            //移除指定键的元素
            ht.Remove("abc");

            //打印输出
            foreach (var item in ht.Keys) //遍历集合中的键
            {
                Console.WriteLine("键:{0} \t 值:{1}", item, ht[item]);
            }
            Console.ReadKey();

        }
    }
}




暗锚,解决锚点偏移

文章评论

    嘿,来试试登录吧!