C#数组和集合专题4(Hashtable类)

时间:2022-09-03 13:46:27

四、Hashtable

①.Hashtable概述

通过Hashtable类将数据作为一组键值对来存储,这些键值对是根据编码来组织的,可以将键作为索引器来获得对应值的对象。

Hashtable对象中的键值必须是唯一的,在Hashtable中一个值只允许出现一次,如果企图往Hashtable对象里添加已经存在键值,将会抛出ArgumentException异常。

Hashtable类用于处理和表现类似键值对,其中键通常可用来快速查找,同时键是区分大小写;用于存储对应于键的值。Hashtable中键值对均为object类型,所以Hashtable可以支持任何类型的键值对.

using System;

using System.Collections;

 

namespace HashtableEmployee

{

    classEmployee

    {

        privateint empID;//员工号

        privatestring empName;//姓名

        privateint empSalary;//员工薪水

        public Employee(int id,string name,int salary)

        {

            this.empID = id;

            this.empName = name;

            this.empSalary = salary;

        }

        publicoverridestring ToString()

        {

            string empInfo="员工号:"+this.empID+",姓名:"+this.empName+",薪水"+this.empSalary;

            return empInfo;

        }

        staticvoidMain(string[] args)

        {

            Hashtable ht = newHashtable();

            ht.Add(1, newEmployee(1, "小雨", 3000));//将一个键值对添加到哈希表中

            ht.Add(4, newEmployee(4, "小华", 2000));

            ht.Add(3, newEmployee(3, "小刚", 1500));

            ht.Add(2, newEmployee(2, "小芳", 3500));

            int number;

            Console.Write("你要查找哪位员工的信息:");

 

                try

                {

                    number = int.Parse(Console.ReadLine());//判断控制台输入的是否为整数

                }

                catch (FormatException)

                {

                    Console.WriteLine("员工号必须是整数!请重新输入!");

                    number = int.Parse(Console.ReadLine());

                }

                if (ht.ContainsKey(number))//测试键是否已经存在

                {

                    Employee emp = (Employee)ht[number];//键作为索引器来获得对应值的对象

                    Console.WriteLine(emp.ToString());

                }

                else

                {

                    Console.WriteLine("你输入的员工编号不存在!");

                }

     

   }