文章类型: .NET
关键词: C#,ArrayList,Hashtable,集合,总结,训练
内容摘要: 针对C#语言中ArrayList与Hashtable集合进行学习,复习,总结和进行训练

C#中ArrayList与Hashtable集合复习总结训练

2015/7/29 10:17:56    来源:apple    阅读:

通过下面表格进行对比:

异同点

ArrayList

Hashtable

不同点

 

元素只有一部分构成

元素有两部分组成,即有KeyValue构成。

添加元素时的Add方法只有一个参数就是该元素

添加元素时的Add方法只有两个参数,第一个是该元素的Key值,第二个为该元素的Value

删除元素时,第一可以通过Remove方法,参数为要删除的元素对象;第二可以通过RomoveAt方法,参数是要删除的元素的下标索引值。

没有元素下标的概念,所以没有RomoveAt方法。删除元素时,只有通过Remove方法,参数是该元素的Key

修改元素时,通过下标获得元素后进行修改赋值

通过Key值获取元素后进行修改后赋值

取出元素时通过索引下标来取出元素。

由于其没有索引下标的概念,所以取出元素不能通过索引,但是有键值的概念,可以通过Key值来取出元素的Value值,类似索引器的形式取值。

遍历元素时可以通过forwhile循环(靠下标)进行遍历元素;也可以通过foreach进行循环进行遍历

由于没有下标的概念,不能通过forwhile循环(没有下标)进行遍历元素,只能通过foreach进行遍历,此时可以通过集合的Keys,Values或者集合本身来遍历(3种形式)。

相同点

集合所处的命名空间相同,都是System.Collections,集合都是类,存放元素前都需要先实例化类。

集合中的成员的数据类型都是object类型,添加元素时都需要做装箱操作,取出元素时都需要做拆箱操作(即需要做类型转换);

清空集合元素的方法相同,都是Clear方法;

添加方法都有Add,遍历时都可以通过foreach

 

ArrayList集合操作的相关代码:

public partial class frmArrayList : Form

    {

        ArrayList employees;

        SE s;

        public frmArrayList()

        {

            InitializeComponent();

        }

 

        private void btnAdd_Click(object sender, EventArgs e)

        {

            SE se = new SE();

            se.No = txtNo.Text;

            se.Name = txtName.Text;

            se.Age = Convert.ToInt32(txtAge.Text);

 

            int index = employees.Add(se);

            s = se;

 

            MessageBox.Show("添加成功后对于的元素索引位置为:"+index);

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

            employees = new ArrayList() { new SE { No = "s1000", Name = "张三", Age = 20 }, new SE { No = "s1001", Name = "李四", Age = 21 }, new SE{No="s1002",Name="王五",Age=22}};

        }

 

        private void btnCount_Click(object sender, EventArgs e)

        {

            MessageBox.Show("ArrayList集合中元素的个数为:"+employees.Count);

        }

 

        private void btnShow_Click(object sender, EventArgs e)

        {

            int index = -1;

            bool bSuccess = int.TryParse(txtIndex.Text.Trim(), out index);

            if (bSuccess)

            {

                if (index > employees.Count -1)

                {

                    MessageBox.Show("输入的索引下标超出范围");

                }

                else

                {

                    SE s = (SE)employees[index];

                    MessageBox.Show(s.Show());

                }

            }

            else

            {

                MessageBox.Show("请输入整数类型!");

            }

        }

 

        private void btnForeach_Click(object sender, EventArgs e)

        {

            for (int i = 0; i < employees.Count; i++)

            {

                MessageBox.Show(((SE)employees[i]).Show());

            }

 

            MessageBox.Show("------Foreach的遍历信息-----------");

            foreach (object o in employees)

            {

                SE s = (SE)o;

                MessageBox.Show(s.Show());

            }

        }

 

        private void btnDelete_Click(object sender, EventArgs e)

        {

            MessageBox.Show("删除前的集合中的所有素为:");

            for (int i = 0; i < employees.Count; i++)

            {

                MessageBox.Show(((SE)employees[i]).Show());

            }

 

            employees.RemoveAt(1);

 

            MessageBox.Show("删除索引下标为1的元素后的集合中的元素为:");

            for (int i = 0; i < employees.Count; i++)

            {

                MessageBox.Show(((SE)employees[i]).Show());

            }

 

            employees.Remove(s);

 

            MessageBox.Show("删除最后添加的元素后的集合中的元素为:");

            for (int i = 0; i < employees.Count; i++)

            {

                MessageBox.Show(((SE)employees[i]).Show());

            }

 

            employees.Clear();

            MessageBox.Show("清空集合后的集合中的元素为:");

            for (int i = 0; i < employees.Count; i++)

            {

                MessageBox.Show(((SE)employees[i]).Show());

            }

        }

}

 

Hashtable集合操作的相关代码:

public partial class frmHashtable : Form

    {

        Hashtable employees;

        public frmHashtable()

        {

            InitializeComponent();

        }

 

        private void btnAdd_Click(object sender, EventArgs e)

        {

            SE se = new SE();

            se.No = txtNo.Text;

            se.Name = txtName.Text;

            se.Age = Convert.ToInt32(txtAge.Text);

 

            employees.Add(se.No, se);

 

            MessageBox.Show("添加成功!");

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

            employees = new Hashtable();

 

            SE s1 = new SE();

            s1.No = "s0001";

            s1.Name = "张三";

            s1.Age = 19;

 

            SE s2 = new SE();

            s2.No = "s0002";

            s2.Name = "李四";

            s2.Age = 22;

 

            SE s3 = new SE();

            s3.No = "s0003";

            s3.Name = "王五";

            s3.Age = 20;

 

            employees.Add(s1.No, s1);

            employees.Add(s2.No, s2);

            employees.Add(s3.No, s3);

        }

 

        private void btnCount_Click(object sender, EventArgs e)

        {

            MessageBox.Show("Hashtable集合中元素的个数为:"+employees.Count);

        }

 

        private void btnShow_Click(object sender, EventArgs e)

        {

            SE se = (SE)employees[txtSeNo.Text];

            MessageBox.Show(se.Show());

        }

 

        private void btnForeach_Click(object sender, EventArgs e)

        {

            MessageBox.Show("------Foreachkeys 遍历信息-----------");

            foreach (object o in employees.Keys)

            {

                SE s = (SE)employees[o.ToString()];

                MessageBox.Show(s.Show());

            }

 

            MessageBox.Show("------Foreachvalues 遍历信息-----------");

            foreach (object o in employees.Values)

            {

                SE s = (SE)o;

                MessageBox.Show(s.Show());

            }

 

            MessageBox.Show("------ForeachHashtable 遍历信息-----------");

            foreach (DictionaryEntry de in employees)

            {

                MessageBox.Show("元素的key为:"+de.Key.ToString()+",元素的信息为:"+((SE)de.Value).Show());

            }

        }

 

        private void btnDelete_Click(object sender, EventArgs e)

        {

            employees.Remove("s0002");

 

            MessageBox.Show("删除员工的编号为's0002'后的集合中的元素为:");

            foreach (object o in employees.Values)

            {

                SE s = (SE)o;

                MessageBox.Show(s.Show());

            }

 

            employees.Clear();

            MessageBox.Show("清空集合后的集合中的元素为:");

            foreach (object o in employees.Values)

            {

                SE s = (SE)o;

                MessageBox.Show(s.Show());

            }

        }

    }


附上面的示例源代码(提取码:6dcc)

↑ 上一篇文章:​C#基础知识 类型、命名空间、装箱拆箱、对象相等 关键词:C#基础知识,类型,命名空间,装箱与拆箱,对象相等 发布日期:2015/7/29 10:16:48
↓ 下一篇文章:比尔盖茨经典名言名句 关键词:比尔,盖茨,比尔盖茨,经典,名言,名句 发布日期:2015/7/29 10:19:19
相关文章:
C#中List与Dictionary泛型集合复习总结训练 关键词:C#,ArrayList,Hashtable,List,Dictionary,List,Dict.. 发布日期:2015-07-29 10:45
C# 委托知识总结及示例 关键词:C#,委托,知识,总结,示例,实例 发布日期:2015-07-29 12:42
使用C#开发数据库应用系统 关键词:S1,初级,ACCP,WinForm,C#,数据库,应用系统,课程总结,PPT 发布日期:2015-07-29 12:35
相关目录:.NET软件开发ANDROID
我要评论
正在加载评论信息......