字典(C#)之.NET中的字典

在.NET中,基本的字典是由类Hashtable来表示的,它遵循现实生活中字典的规则,但假定健和条目都是O bject类型.散列表可以存储各类数据结构,而现实生活中的字典只使用字符串,作为它的健.

虽然Hashtable表示可以存储任何东西的一般字典,但也可以定义自己的更专门化的字典类.Microsoft提供了一个抽象基类DicionaryBase,它具有基本的字典功能,从中可以派生自己的字典类.还有一个已建好的.NET基类System.Collections.Specialized.StringDictionary,如果键是字符串,就可以使用它来代替Hashtable.

与StringBuilder和ArrayList一样,在创建一个Hashtable对象时,可以指定它的原始容量:

Hashtable Employee = new Hashtable(53);

与往常一样,Hashtable有许多其它的构造函数,但这是最常用的一个,注意我选择了一个不太觉的最初容量其大小为53,其原因是在字典中使用内部算法时,如果容量是一个素数(不能被其它整数整除的数,),他们的工作效率最高.

给Hashtable添加一个对象,要使用方法Add(),但Hashtable.Add()带有两个参数,它们都是对象引用.第一个参数是键的引用,第二个参数是对数据的引用.在后面的样例中,对EmployeeID和EmployeeData类执行这个方法.

EmployeeID id;

EmployeeData data;

//initialize id and data to refer to some employee,assume employees is a Hashtable instance,that contains EmployeeData References

employees.Add(id,data);

为了获取一个条目中的数据,需要提供键.Hashtable执行一个索引符,这样才能获取数据,这就是前面介绍的获取数据的语法:

EmployeeData data = employees[id];

还可以从字典中删除条目,这也要提供被删除的对象的键:

employees.Remove(id);

使用Count属性,可以确定散列表中有多少个条目:

int nEmployees = employees.Count;

但要注意,字典中没有Insert()方法.我们还没有介绍字典的内部工作情况,但添加数据和插入数据没什么区别.与数据和ArrayList不同,在结构的开头没有一个大的数据块,在其尾部,也没有空的数据块.而在字典中,没有标记的部分都是空的.

在添加一个条目时,该条目会放在字典的任何位置.在使用字典时,有需要知道如何根据健来确定这个位置.重要的是,用于确定条目的位置的算法应非常可靠,只要雇键是什么,就可以把这个键传送给Hashtable对象,该对象就可以使用这个键快速确定条目的位置,并获取该条目.还有,每个键/条目对实际上并没有存储在字典结构的内部------通常对于引用类型来说,存储的是对象的引用,它们可以指定对象实际定位在堆的什么地方.

你可能感兴趣的:(字典(C#)之.NET中的字典)