欢迎来到 IT实训基地-南通科迅教育
咨询电话:0513-81107100
C#语言基础——集合(ArrayList集合)-这都不是事
2017/2/22
科迅教育
313
南通网页设计培训怎么样-基础教学

集合的基本信息:

 

System.Collections 命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。

System.Collections.Generic 命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能。

ystem.Collections.Specialized 命名空间包含专用的和强类型的集合,例如,链接的列表词典、位向量以及只包含字符串的集合。

 

常用的集合为ArrayList类;特殊集合一般会用到Queue队列集合、Stack栈集合还有Hashtable哈希表集合。

 

集合不同于数组,是一组可变数量的元素的组合,这些元素可能共享某些特征,需要以某种操作方式一起进行操作。一般来说,这些元素的类型是相同的。

 

集合与数组的区别:数组是连续的、同一类型数据的一块区域,而集合可以是不连续的、多种数据类型的。

 

一、ArrayList集合:

 

ArrayList实现了IListICollectionIEnumerable接口;

 

ArrayListArray的名字很相似,现在来比较一下两者的异同。

 

相同点:

 

(1)两者都实现了IListICollectionIEnumerable接口;

 

(2)两者都可以使用整数索引访问集合中的元素,包括读取和赋值,且集合中的索引都从0开始。

 

不同点:

 

(1)ArrayList是集合,而Array是数组;

 

(2)ArrayList是具体类,Array是抽象类;

 

(3)数组必须在实例化时指定元素的数量,该数量一旦确定就不可以更改了,而ArrayList扩展了这一点,当实例化一个ArrayList实例时可以不指定集合元素数(有默认初始容量),当然你也可以指定初始容量;

 

(4)获取数组的元素数时使用Length属性,而获取ArrayList集合的元素数时使用Count属性;

 

(5)数组可以有多维,而ArrayList只能是一维。

 

ArrayList具体提供的功能:

 

ArrayList al = new ArrayList();//初始化

 

al.Add(3);

 

al.Add(5);

 

al.Add(1);

 

al.Add(8);

 

al.Add(4);

 

错误 因为5号索引之前就没有,所以直接赋值不可以

 

al[5] = 9;

 

al[4] = 9;

 

查看个数

 

Console.WriteLine(al.Count);

 

清空集合

 

al.Clear();

 

克隆集合

 

ArrayList al1 = new ArrayList();

 

al1 = (ArrayList)al.Clone();

 

Console.WriteLine(al1[2]);

 

判断是否包含某个元素

 

Console.WriteLine(al.Contains(6));

 

查看第一次出现该元素的索引号 若没有,返回-1

 

Console.WriteLine(al.IndexOf(1));

 

查看最后一次出现该元素的索引号

 

Console.WriteLine(al.LastIndexOf(9));

 

1号索引插入一个4

 

al.Insert(1,4);

 

Console.WriteLine(al[1]);

 

移除某个元素的第一次出现的值

 

al.Remove(4);

 

Console.WriteLine(al[1]);

 

移除某个索引号上的元素

 

al.RemoveAt(3);

 

Console.WriteLine(al[3]);

 

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

 

{

 

Console.WriteLine(al[i]);

 

}

 

Console.WriteLine();

 

al.Sort();//排序,升序

 

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

 

{

 

Console.WriteLine(al[i]);

 

}

 

改为降序

 

al.Reverse();//翻转集合

 

例题:1、输入人数,输入每一个人的分数,求平均分,求最高分,求最低分,写成集合。

 

ArrayList a = new ArrayList();

 

double m = 0;

 

Console.Write("请输入人数:");

 

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

 

for (int i = 0; i < b; i++)

 

{

 

Console.Write("输入分数:");

 

a.Add(double.Parse(Console.ReadLine()));

 

m += double.Parse(a[i].ToString());

 

}

 

Console.Write("平均分为:"+(m/b));

 

a.Sort();

 

Console.Write("最低分为:"+a[0]);

 

Console.Write("最高分为:" + a[b - 1]);

 

Console.ReadLine();

 

2、将每个人的姓名,年龄存入集合,按照年龄从大到小排列,姓名也需要排列,需要知道年龄最大的是谁。

 

法一:

 

Console.Write("请输入人数:");

 

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

 

ArrayList xm = new ArrayList();

 

ArrayList age = new ArrayList();

 

for (int i = 0; i < n; i++)

 

{

 

Console.Write("请输入第{0}个人的姓名:", (i + 1));

 

xm.Add(Console.ReadLine());

 

Console.Write("请输入{0}个人的年龄:", (i + 1));

 

age.Add(int.Parse(Console.ReadLine()));

 

}

 

for (int i = 0; i < n; i++)

 

{

 

for (int j = i; j < n - 1; j++)

 

{

 

if (int.Parse(age[i].ToString()) < int.Parse(age[j + 1].ToString()))

 

{

 

int zh = int.Parse(age[i].ToString());

 

age[i] = age[j + 1];

 

age[j + 1] = zh;

 

string z = xm[i].ToString();

 

xm[i] = xm[j + 1];

 

xm[j + 1] = z;

 

}

 

}

 

}

 

Console.WriteLine("年龄最大的是{0},{1}", xm[0], age[0]);

 

Console.ReadLine();

 

法二:

 

Console.WriteLine("请输入人数:");

 

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

 

ArrayList jh = new ArrayList();

 

for (int i = 0; i < a; i++)

 

{

 

Console.Write("请输入第{0}人的姓名:", i + 1);

 

jh.Add(Console.ReadLine());

 

Console.Write("请输入第{0}人的年龄:", i + 1);

 

jh.Add(Console.ReadLine());

 

}

 

Console.WriteLine();

 

for (int i = 1; i < a * 2; i = i + 2)

 

{

 

for (int j = i; j < a * 2 - 2; j = j + 2)

 

{

 

if (int.Parse(jh[i].ToString()) < int.Parse(jh[j + 2].ToString()))

 

{

 

int huan = int.Parse(jh[i].ToString());

 

jh[i] = jh[j + 2];

 

jh[j + 2] = huan;

 

string o = jh[i - 1].ToString();

 

jh[i - 1] = jh[j + 1];

 

jh[j + 1] = o;

 

}

 

}

 

}

 

Console.WriteLine("年龄最大的为:" + jh[0] + "年龄为:" + jh[1]);

 

Console.ReadLine();

 

注:借用上一题的定义集合名

 

●遍历集合:foreach (object aa in jh)

 

{

 

Console.WriteLine(aa);

 

}

 

●遍历数组:int [] array = new int[]{2,3,4,6,7,8,9,2};

 

foreach (int aa in array)

 

{

 

Console.WriteLine(aa+2);

 

}

77
关闭
先学习,后交费申请表
每期5位名额
在线咨询
免费电话
QQ联系
先学习,后交费
TOP
您好,您想咨询哪门课程呢?
关于我们
机构简介
官方资讯
地理位置
联系我们
0513-91107100
周一至周六     8:30-21:00
微信扫我送教程
手机端访问
南通科迅教育信息咨询有限公司     苏ICP备15009282号     联系地址:江苏省南通市人民中路23-6号新亚大厦三楼             法律顾问:江苏瑞慈律师事务所     Copyright 2008-