C# Hashtable
目录
Hashtalbe的本质
申明
增
删
查
改
遍历
Hashtalbe的本质
Hashtable(又称散列表) 是基于键的哈希代码组织起来的 键/值对
它的主要作用是提高数据查询的效率
使用键来访问集合中的元素
申明
需要引用命名空间 System.Collections
Hashtable hashtable = new Hashtable();
增
hashtable.Add(1, "123");
hashtable.Add("123", 2);
hashtable.Add(true, false);
hashtable.Add(false, false);
注意:不能出现相同键
删
只能通过键去删除
hashtable.Remove(1);
删除不存在的键 没反应
hashtable.Remove(2);
或者直接清空
hashtable.Clear();
查
通过键查看值,找不到会返回空
Console.WriteLine(hashtable[1]);
Console.WriteLine(hashtable[4]);//null
Console.WriteLine(hashtable["123123"]);
查看是否存在
根据键检测
if( hashtable.Contains(2) )
{
Console.WriteLine("存在键为2的键值对");
}
if( hashtable.ContainsKey(2) )
{
Console.WriteLine("存在键为2的键值对");
}
根据值检测
if( hashtable.ContainsValue(12) )
{
Console.WriteLine("存在值为12的键值对");
}
改
只能改 键对应的值内容 无法修改键
Console.WriteLine(hashtable[1]);
hashtable[1] = 100.5f;
Console.WriteLine(hashtable[1]);
遍历
得到键值对 对数
Console.WriteLine(hashtable.Count);
1.遍历所有键
foreach (object item in hashtable.Keys)
{
Console.WriteLine("键:"+item);
Console.WriteLine("值:"+hashtable[item]);
}
2.遍历所有值
foreach (object item in hashtable.Values)
{
Console.WriteLine("值:" + item);
}
3.键值对一起遍历
foreach (DictionaryEntry item in hashtable)
{
Console.WriteLine("键:" + item.Key + "值:" + item.Value);
}
4.迭代器遍历法
IDictionaryEnumerator myEnumerator = hashtable.GetEnumerator();
bool flag = myEnumerator.MoveNext();
while (flag)
{
Console.WriteLine("键:" + myEnumerator.Key + "值:" + myEnumerator.Value);
flag = myEnumerator.MoveNext();
}
class MonsterManager
{private int id=0;private Hashtable Monstertable = new Hashtable();private static MonsterManager instance=new MonsterManager();private MonsterManager(){ }public static MonsterManager Instance{get {return instance;}}public void AddMonster(){Monster monster = new Monster(id);Monstertable.Add(id, monster);id++;}public void DelMonster(int monsterId){(Monstertable[monsterId] as Monster).Dead();Monstertable.Remove(monsterId);}public void Show(){foreach (object itme in Monstertable.Keys){Console.WriteLine((Monstertable[itme]as Monster).Id);}}}class Monster
{public int Id { get; set; }public string Name { get; set; }public Monster(int id){Id = id;}public void Dead(){Console.WriteLine("id为"+Id+"的怪兽死亡");}}class Program
{public static void Main(){for (int i = 0; i < 5; i++){MonsterManager.Instance.AddMonster();}MonsterManager.Instance .DelMonster(0);MonsterManager.Instance .DelMonster(1);MonsterManager.Instance .Show ();}}