字典(C#)

字典是非常复杂的数据结构,这种数据结构允许按照某个键来访问元素, 这个键可以是任意数据类型.字典还可以称为映射或散列表.在希望把数据保存为数组,但希望使用其它数据类型(不是数字类型)来给结构建立索引时,字典是非常合适的.它们也可以自由添加或删除元素,有点像ArrayList. 

如果使用字典?我们假定有一个Employee类,有EmployeeID,EmployeeData两项来记录Employee的标识和信息.这里的Employee信息只有姓名,薪水.

假定有下述EmployeeID:

EmployeeID id = new EmployeeID("M0001");

有一个变量employees,在语法上,我们可以把这个变量当作EmployeeData对象的一个数组.但在实际上,它并不是一个数组,而是一个字典,因此,可以使用上面声明的id获得员工的信息,如下:

EmployeeData theEmployee = employees[id];

这就是字典的功能.它看起来像一个数组(实际上比这更强大,它更像一个ArrayList,因为可以动态设置它的容量,添加或删除其元素),但不必用整数给它建立索引,而可以使用任意数据类型来建立索引.对于字典,这称为键,而不是索引.粗略的讲,在访问字典的元素时,字典就会使用这个键,在上面的样例中,这个健就是ID对象.还可以对这个键的值进行某些处理,这种处理会根据键的值返回一个整数,用于确定在"数组"中,元素应存储在什么地方,或从什么地方获取.使用字典来存储对象的其他场合有:

  • 可以存储员工或其他人的信息,使它们的社会安全号作为索引.社会安全号基本上是个整数,但不能使用数组,并把它当做索引,在理论上最大的号为999999999,便32系统上不可能在程序中给数组分配这么大的地址空间.数组的大部分都是空的.而使用字典,可以用社会安全号来为员工建立索引,且字典占据的空间较小.
  • 如果想存储地址,索引是邮政编码.在中国,邮政编码都是数字,但在加拿大,邮政编码中也有字母.在UK,邮政编码是包含字母和数字的字符串.
  • 任何要存储的对象或人的数据,其索引是对象或人的名字.

尽管字典的作用是使客户机代码看起来更像员工动态的数组,有非常灵活的索引机制,但后台要做许多工作才能实现这个功能.大体上,任何类的对象都可以用作字典的索引键,但在此之前,需要对类执行某些功能,通常要执行GetHashCode(),所有的类和结构都从System.Object继承了这个方法.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值