黑马程序员--数组与集合

来源:互联网 发布:程序员标准形象 编辑:程序博客网 时间:2024/06/06 04:02

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ---------------------- ----------------------


数组:继承自 Array类

命名空间:using System.Collections.Generic;

数组的长度为固定的。


方法:提供创建、操作、搜索和排序数组的方法。下面都是静态的,使用时前面加上 Array

BinarySearch():使用二进制(二分法)搜索值,但之前要排序。

Clear():将Array一系列元素设定为零、false或null,具体依数组的类型。要指定范围。

ConstrainedCopy():将源Array复制到另一个Array。可以设定范围,未成功则回滚。

Copy():一个Array中的一部分复制到另一个Array中。

CopyTo():将当前Array的所有元素复制到另一个Array中。

IndexOf():返回Array中某个值的第一个匹配项的索引。

Sort():对Array中的元素进行排序。升序。


属性:

IsFixedSize: 指示Array是否具有固定大小。

IsReadOnly:指示Array是否只读。

Length:表示Array中所有维数中元素的个数。


实例代码:

        public int [] sz;//初始化数组的大小        public bool szbl = false;        private void button1_Click(object sender, EventArgs e)        {            sz =new int[]{ 2, 3, 5, 1, 9, 6 }; //初始化6个元素            Msg("数组初始化成功!");            szbl = true;        }        public void Msg(string s)        {            txtMsg.AppendText(s+"\r\n");        }        private void btnAyLength_Click(object sender, EventArgs e)        {            if (szbl == false)            {                MessageBox.Show("请先初始化数组");                return;            }            int i = sz.Length;//返回数组的长度,元素的个数;            string s = string.Format("数组的容量为{0}", i);            Msg(s);        }        private void btnAyIndexOf_Click(object sender, EventArgs e)        {            if (txtAy.Text.Trim() == "")            {                MessageBox.Show("查询栏不得为空!");                return;            }            int i = int.Parse(txtAy.Text.Trim()); //获取查询的值            int zb = Array.IndexOf(sz, i);  //查询方法 Array.IndexOf()            string s;            if (zb == -1)            {                s = string.Format("未找到这个数字!");            }            else            {                s = string.Format("已找到,是第{0}个位置!",zb+1);            }            Msg(s);        }        private void btnAySort_Click(object sender, EventArgs e)        {            string s="";            foreach (int ys in sz)            {                s += ys.ToString() + "  ";            }            Msg(s);            Msg("排序后的元素");            s = "";            Array.Sort(sz);               //排序的方法,从小到大。            foreach (int ys in sz)            {                s += ys.ToString() + "  ";            }            Msg(s);        }        private void btnCopyTo_Click(object sender, EventArgs e)        {            string s="";            int[] xsz = new int[sz.Length];            Array.Copy(sz, xsz, sz.Length);    //从一个Array复制到另一个Array            foreach (int ys in sz)            {                s += ys.ToString() + "  ";            }            Msg("老数组:");            Msg(s);            s = "";            foreach (int ys in xsz)            {                s += ys.ToString() + "  ";            }            Msg("新数组:");            Msg(s);        }        private void btnClear_Click(object sender, EventArgs e)        {            Array.Clear(sz,0,sz.Length);  //清空数组,参数为范围            Msg("清空数组成功!");        }



集合: ArrayList类

命名空间为:using System.Collections;

具有常规数组的类似功能,并能动态调整集合的大小。

向当前大小少于其容量的ArrayList插入元素非常快,向需要增大空间来容纳新元素的ArrayList插入元素比较慢。

如果ArrayList需要增大容量,默认情况下会将容量增大为当前值的2 倍。


方法:

Add:将对象添加到ArrayList的结尾处。

AddRange:可以将集合添加到此ArrayList中。

Clear:移除所有的元素。

Contains:确定某元素是否在ArrayList中。

IndexOf:返回指定对象第一次出现时的索引值。

Remove:移除指定对象的第一个匹配。

RemoveAt:移除指定索引位置上的对象,后面的对象下标向前移动。

Sort:对ArrayList进行排序。升序。

TrimToSize:将Capacity的大小设为当前所包含的元素的个数。


属性:

Capacity:获取或设置ArrayList可包含的元素值。

Count:获取ArrayList实际包含的元素数。


代码示例:

        public void Msg(string s)        {            txtMsg.AppendText(s + "\r\n");        }        public ArrayList jihe;        private void btnAylistIn_Click(object sender, EventArgs e)        {            jihe = new ArrayList {3,5,6,9,2,1 }; //初始化集合            Msg("集合初始化成功!");        }        private void btnAyLCount_Click(object sender, EventArgs e)        {            int i = jihe.Count;  //获取集合的元素总数            string s = string.Format("集合内的元素为{0},允许的元素为{1}",i,jihe.Capacity);            Msg(s);        }        private void btnAyLSort_Click(object sender, EventArgs e)        {            string s = "";            foreach (int ys in jihe)            {                s += ys.ToString() + "  ";            }            Msg(s);            Msg("排序后的元素");            s = "";            jihe.Sort();  //对集合进行排序,升序。            foreach (int ys in jihe)            {                s += ys.ToString() + "  ";            }            Msg(s);        }        private void btnAyLIndex_Click(object sender, EventArgs e)        {            if (txtAyList.Text.Trim() == "")            {                MessageBox.Show("查询栏不得为空!");                return;            }            int i = int.Parse(txtAyList.Text.Trim()); //所要查询的值            int zb = jihe.IndexOf(i);   //根据值查询下标,如果不存在 返回-1            string s;            if (zb == -1)            {                s = string.Format("未找到这个数字!");            }            else            {                s = string.Format("已找到,是第{0}个位置!", zb + 1);            }            Msg(s);        }        private void btnAyLadd_Click(object sender, EventArgs e)        {            if (txtAyList.Text.Trim() == "")            {                MessageBox.Show("查询栏不得为空!");                return;            }            int i = int.Parse(txtAyList.Text.Trim());            jihe.Add(i);       //调用.Add方法,向集合添加元素            string s = string.Format("加入的元素为{0}", i);            Msg(s);        }        private void btnAyLClear_Click(object sender, EventArgs e)        {             jihe.Clear();      //移除集合的所有元素            Msg("移除了集合的所有元素!");        }



数组与集合的区别:

1.数组大小固定,集合可以调整。

2.获取元素的总算:数组的属性是Length ,集合的是Count。

3.清空元素的值:都是调用Clear方法,数组需要有范围:第二个参数为起始的下标,第三个参数为要清空的长度。 集合直接调用Clear()清空所有的元素。


---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ---------------------- ----------------------


原创粉丝点击