zoukankan      html  css  js  c++  java
  • 《Hashtable(散列表)》 集合

    Hashtable将添加的元素存放在System.Collections.DictionaryEntry对象里,因此使用foreach或者IEnumerator的Current属性时,都应该将Hashtable中的元素转换为DictionaryEntry对象。可以使用键值作为索引来往问Hashtable中的元素,当检索值时,健再次被散列,并将得到的散列值作为索引来检索值在表中的位置。

       Add方法用来将健/值对添加到Hashtable中,即健被散列,散列值作为值插入表中的位置,用来标识存储位置,Hashtable的健不能为空但是值可以是空引用。

    首先演示一下Hashtable的使用:

    using System;

     

     

     

     

    using System.Collections;

     

    namespace HashtableTest

    {

        class Test

        {

            public static void Judgevalue(Hashtable table)

            {

                if (table.ContainsKey("Wednesday"))

                {

                    Console.WriteLine("table中包含健Wednesday");

                }

                else

                {

                    Console.WriteLine("table中不包含健Wednesday");

                }

                if (table.ContainsValue("星期三"))

                {

                    Console.WriteLine("table中包含值星期三");

                }

                else

                {

                    Console.WriteLine("table中不包含值星期三");

                }

            }

            static void Main(string[] args)

            {

                Hashtable table=new Hashtable();

                table.Add("Sunday","星期天");

                table.Add("Monday""星期一");

                table.Add("Tuesday""星期二");

                table["Wednesday"] = "星期三";

                Console.WriteLine("table中的元素数量为{0}", table.Count);

                Console.WriteLine("Tuesday对应的值为{0}",table["Tuesday"]);

                Console.WriteLine("table中的所有元素包括:");

                IEnumerator e = table.GetEnumerator();

                while (e.MoveNext())

                {

                    DictionaryEntry de = (DictionaryEntry)e.Current;

                    Console.WriteLine("{0}-{1}",de.Key,de.Value);

                }

                Judgevalue(table);

                Console.WriteLine("删除Wednesday-星期三");

                table.Remove("Wednesday");

                Judgevalue(table);

                table.Add("Thursday","星期四");

                table.Add("Firday""星期五");

                table.Add("Saturday""星期六");

                Console.WriteLine("扩容后:");

                Console.WriteLine("table中的元素数量为{0}", table.Count);

                Console.WriteLine("table中的所有元素包括:");

                e = table.GetEnumerator();

                e.Reset();//return to seat

                while (e.MoveNext())

                {

                    DictionaryEntry de = new DictionaryEntry();

                    Console.WriteLine("{0}-{1}",de.Key,de.Value);

                }

                Console.ReadKey();

            }

        }

    }

    使用Add方法添加元素的时候,当添加的元素在表中存在时,Add会引发异常,而使用键值作为索引则只是将旧值换新值。例如:

    using System;

    using System.Collections;

     

    namespace HashtableTEST

    {

        class Test

        {

            static void Main()

            {

                Hashtable table = new Hashtable();

                Console.WriteLine("使用Add方法添加:");

                table.Add("Sunday""星期天");

                table.Add("Monday""星期一");

                table.Add("Tuesday""星期二");

                table.Add("Wednesday""星期三");

                table.Add("Thursday""星期四");

                table.Add("Friday""星期五");

                table.Add("Saturday""星期六");

                Console.WriteLine("表中的元素为:");

                IEnumerator e = table.GetEnumerator();

                while (e.MoveNext())

                {

                    DictionaryEntry de = (DictionaryEntry)e.Current;

                    Console.WriteLine("{0}-{1}",de.Key,de.Value);

                }

                Console.WriteLine();

                try

                {

                    table.Add("Wednesday""周三");

                    //当添加的元素的健值在表中存在时为引发异常

                }

                catch (Exception ex)

                {

                    Console.WriteLine("发生异常"+ex.Message);

                } 

                Console.WriteLine("表中的元素为:");

                e = table.GetEnumerator();

                e.Reset();

                while (e.MoveNext())

                {

                    DictionaryEntry de = (DictionaryEntry)e.Current;

                    Console.WriteLine("{0}-{1}", de.Key, de.Value);

                }

                Console.WriteLine();

                try

                {

                    table["Wednesday"] = "周三";//不会引发异常

                }

                catch(Exception ex)

                {

                    Console.WriteLine(ex.Message);

                }

                e = table.GetEnumerator();

                e.Reset();

                while (e.MoveNext())

                {

                    DictionaryEntry de = (DictionaryEntry)e.Current;

                    Console.WriteLine("{0}-{1}", de.Key, de.Value);

                }

                Console.ReadKey();

            }

        }

    }

     

     

  • 相关阅读:
    vue---echarts图表
    路由嵌套
    VoIP语音通话研究【进阶篇(四):freeswitch+webrtc+sip.js的通话】
    VoIP语音通话研究【进阶篇(三):opensips安装】
    如何在北京退休?
    后端分析/前端分析/边缘分析
    使用curl批量下载图片
    pytorch固定随机种子复现实验结果
    分享一个作为面试官的面试思路
    两个流程链路问题的排查和总结
  • 原文地址:https://www.cnblogs.com/rohelm/p/2384098.html
Copyright © 2011-2022 走看看