C# Hashtable类:哈希表(散列表)中的方法和属性

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

C# 中的 Hashtable 称为哈希表,也称为散列表,在该集合中使用键值对(key/value)的形式存放值。

换句话说,在 Hashtable 中存放了两个数组,一个数组用于存放 key 值,一个数组用于存放 value 值。

此外,还提供了根据集合中元素的 key 值查找其对应的 value 值的方法。

Hashtable 常用的是不含参数的构造方法。

Hashtable 对象名 = new Hashtable();

一、常见方法

1、Hashtable.Add(Object, Object) 方法

将带有指定键和值的元素添加到 Hashtable 中。

Hashtable test = new Hashtable
{
     
	{
      1, 234 },
    {
      2, null},//不能 null 键,但值可以是
    {
      3, 345 },
    {
      4, 234 }
};
foreach(DictionaryEntry v in test)
{
     
	Console.WriteLine("序号{0}对应的值是{1}",v.Key,v.Value);
}

2、Hashtable.Clear 方法

从 Hashtable 中移除所有元素。

Hashtable test = new Hashtable
{
     
	{
      1, 234 },
    {
      2, null},//不能 null 键,但值可以是
    {
      3, 345 },
    {
      4, 234 }
};
foreach(DictionaryEntry v in test)
{
     
	Console.WriteLine("序号{0}对应的值是{1}",v.Key,v.Value);
}
test.Clear();
foreach(DictionaryEntry v in test)
{
     
	Console.WriteLine("移除后的结果:序号{0}对应的值是{1}",v.Key,v.Value);
}

3、Hashtable.Contains(Object) 方法

确定 Hashtable 是否包含特定键。

public virtual bool Contains (object key);

要使用在 Hashtable 中定位的键,如果包含指定键即为 Hashtable,否则为 False。

Hashtable ht = new Hashtable
{
     
	{
      1, "计算机基础" },
	{
      2, "高级编程" },
	{
      3, "数据库应用" }
};
Console.WriteLine("请输入图书编号");
int id = int.Parse(Console.ReadLine());
bool flag = ht.Contains(id);
if (flag)
{
     
	Console.WriteLine("你查找的图书名称是:{0}", ht[id].ToString());
}
else
{
     
	Console.WriteLine("你查找的图书编号不存在!");
}

Contains 可实现 IDictionary.Contains,它的行为与 ContainsKey 完全相同。

4、Hashtable.ContainsKey(Object) 方法

确定 Hashtable 是否包含特定键。

public virtual bool ContainsKey (object key);

如果 true 包含具有指定键的元素,则为 Hashtable;否则为 false。

Hashtable test = new Hashtable()
{
     
	{
     0,"zero"},
	{
     1,"one"},
	{
     2,"two"},
	{
     3,"three"},
	{
     4,"four"}
};
//打印哈希表
foreach (DictionaryEntry v in test)
{
     
	Console.WriteLine("键值{0}对应的数值是{1}",v.Key,v.Value);
}
//判断指定键
Console.WriteLine("请输入指定键值:");
try
{
     
	int myKey = int.Parse(Console.ReadLine());
	if(test.ContainsKey(myKey))
	{
     
		Console.WriteLine("这个键值在哈希表中,且值为:" + test[myKey]);
	}
	else
	{
     
		Console.WriteLine("这个键值不在哈希表中");
	}
	catch (EXception ex)
	{
     
		Console.WriteLine(ex.Message);
	}
}

在判断时可采用三元表达式:

Hashtable test = new Hashtable()
{
     
	{
     0,"zero"},
	{
     1,"one"},
	{
     2,"two"},
	{
     3,"three"},
	{
     4,"four"}
};
int myKey = 2;
Console.WriteLine("键值{0}是{1}",myKey,test.ContainsKey(myKey)?"在哈希表中":"不在哈希表中");

5、Hashtable.ContainsValue(Object) 方法

确定 Hashtable 是否包含特定值。

public virtual bool ContainsValue (object value);

如果 true 包含具有指定 Hashtable 的元素,则为 value;否则为 false。

Hashtable test = new Hashtable()
{
     
	{
     0,"zero"},
	{
     1,"one"},
	{
     2,"two"},
	{
     3,"three"},
	{
     4,"four"}
};
//打印哈希表
foreach (DictionaryEntry v in test)
{
     
	Console.WriteLine("键值{0}对应的数值是{1}",v.Key,v.Value);
}
//判断指定数值
Console.WriteLine("请输入数值:");
try
{
     
	string myValue = Console.ReadLine().ToString();
    if (test.ContainsValue(myValue))
    {
     
    	Console.WriteLine("这个数值在哈希表中");
    }
 	else
    {
     
  		Console.WriteLine("这个数值不在哈希表中");
    }
}

6、Hashtable.Remove(Object) 方法

根据指定的 key 值移除对应的集合元素。

Hashtable test = new Hashtable()
{
     
	{
     1,"张三"},
	{
     2,"李四"},
	{
     3,"王五"},
	{
     4,"马六"},
	{
     5,"陈七"},
	{
     6,"周八"}
};
foreach(DictionaryEnty v in test)
{
     
	Console.WriteLine("键值{0}对应的数值是{1}",v.Key,V.Value);	
}
test.Remove();
foreach(DictionaryEntry v int test)
{
     
	Console.WriteLine("键值{0}对应的数值是{1}",v.Key,V.Value);
}

二、常用属性

Count 属性

获取哈希表中的元素个数。

Hashtable test = new Hashtable()
{
     
	{
     1,"张三"},
	{
     2,"李四"},
	{
     3,"王五"},
	{
     4,"马六"},
	{
     5,"陈七"},
	{
     6,"周八"}
};
int num = test.Count;
Console.WriteLine(num);

你可能感兴趣的:(C#学习之记笔记,c#,哈希表)