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 ---- 按 值 查找
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();
}
}
}