c#面向对象之字典集合hashtable

Hashtable概述

在.NET中,Hashtable是用来处理 Key/Value(键/值)对的集合容器。其中Key通常用来快速查找,Value用来储存对应的Key值,Key区分大小写,Hashtable的Key和Values均为Object类型,所以在访问的时候要把类型从Object类型转换为原来的类型。相对于ArrayList,Hashtable更方便查找指定元素。

Hashtable常用属性及方法

Hashtable常用属性

属性 说明
Keys 获取包含Hashtable中所有键的ICollection,可以遍历该属性访问Hashtable中所有键
Values 获取包含Hashtable中所有值的ICollection,可以遍历该属性访问Hashtable中所有值
Count 获取Hashtable中键/值对的数目

Hashtable常用方法

方法 说明
Add(obgect keys,object values) 将带有指定键和值的元素添加到Hashtable中
Remove(object key) 删除Hashtable中指定键的元素
Clear() 清空Hashtable中所有的元素
ContainKey(object key) 判断Hashtable中是否包含指定键,该方法返回bool类型值
ContinVlue(object value) 判断Hashtable中是否包含指定值,该方法返回bool类型值

ps: 在Hashtable中的元素不需要按顺序储存,所以没有关于排序的方法

Hashtable的使用

新建一个Student类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace
{
class Student
{
private string name;
private int age;
private bool sexCode;
private char sex;

public string Name
{
get
{
return name;
}

set
{
name = value;
}
}

public int Age
{
get
{
return age;
}

set
{
age = value;
}
}

public bool SexCode
{
get
{
return sexCode;
}

set
{
sexCode = value;
}
}

public char Sex
{
get
{
if (SexCode == true)
sex = '男';
else
sex = '女';
return sex;
}

}

/// 显示学生信息
/// </summary>
public void Show()
{

Console.WriteLine("姓名:{0},性别:{1},年龄:{2}", Name, Sex, Age);
}


/// 用户查询学生姓名时显示对应的学生信息
/// </summary>
/// <param name="name"></param>
public void Show(string name)
{
Console.WriteLine("你查询学生的信息如下");
Console.WriteLine("姓名:{0},性别:{1},年龄:{2}", Name, Sex, Age);
}
}
}

在Main函数中使用Hashtable,调用Student类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//实例化两个学生类,添加两个学生
Student zhong = new Student() { Name = "钟", SexCode = true, Age = 19 };
Student zhi = new Student() { Name = "智", SexCode = false, Age = 19 };
//实例化一个字典集合Hashtable,把学生的信息存入Hashtable
Hashtable hst = new Hashtable();
//存入学生信息,第一个参数是键 Keys(这里以学生的姓名为键),第二个参数是值 values (这里以学生信息对象为值)。
//键和值 Keys&&Values 均为Object类型,所以在访问键值的时候都要转回储存前的类型
hst.Add(zhong.Name,zhong);
hst.Add(zhi.Name,zhi);

//删除指定键的内容
//hst.Remove(zhong.Name);

//判断是否存在键,该值为bool值
hst.ContainsKey(zhong.Name);
//判断是否存在该内容,该值为bool值
hst.ContainsValue(zhong);
//用户输入学生信息
Console.WriteLine("请输入你要查询学生的姓名");
string name= Console.ReadLine();
//查询用户输入学生姓名,在Hashtable钟找出该学生的信息
Student stu = hst[name] as Student;

try
{
//打印出该学生的信息
stu.Show(name);
}
catch (Exception)
{
//若查询不到则提示该学生信息不存在
Console.WriteLine("该学生信息不存在");
}

Console.ReadKey();