你的位置:首页 > ASP.net教程

[ASP.net教程]C# 集合


 

ArrayList
ArrayList myarry = new ArrayList();
myarry.Add(1);//添加元素
myarry.Add(2);//索引也是从零开始
myarry.Add(3);
myarry.Add(4);
myarry.Add(5);

myarry.Insert(3,"7");
插入在索引号为3的位置一个为7的值
后面的索引依次向后+1

myarry.Remove(4);
移除数据为4的元素
括号里面是想要移除的数据

myarry.RemoveAt(4);
移除索引号为4的数据

int aa = myarry.Count;
统计集合内元素的个数
Console.WriteLine("总共有"+aa+"个元素");

myarry.Clear();//将集合清空

bool b = myarry.Contains(3);
判断是否有括号内的数据,返回的是bool值(True或者False)

int bb = myarry.IndexOf(2);
int cc = myarry.LastIndexOf(2);
Console.WriteLine(bb);

myarry.Sort();
自动进行排序,升序

若需要降序排列,在自动排列之后,对整个集合进行反转指令
myarry.Reverse();

ArrayList ar = new ArrayList();
ar = (ArrayList)myarry.Clone();
集合的克隆

foreach (object a in myarry)
{//从头到尾打印出集合中的所有元素
Console.WriteLine(a);
}

Console.ReadLine();

 

集合中有元素是以object这个类型存在
object类是所有类的基类
小的数据类型不可以接收object类型的数据
object类型的变量可以接收任何类型的变量
string aaa = "2";
object bbb = aaa;
aaa不可以接收bbb的值

Console.WriteLine(myarry[3]);
Console.ReadLine();

 

Stack 集合

Stack aa = new Stack();
aa.Push(1);//向stack集合中添加数据
aa.Push(2);
aa.Push(3);
aa.Push(4);
aa.Push(5);

注意:Stack是没有索引的
Console.WriteLine(aa[0]);//是错误的

Console.WriteLine(aa.Peek());//仅用来查看最后一位,不踢出

aa.Pop();//弹出,踢出最后一个进入集合的数据

Console.WriteLine( aa.Pop());

int aaa = aa.Count;//统计个数

aa.Clear();//清空集合


foreach (object a in aa)
{
Console.WriteLine(a);
}

Console.ReadLine();


Queue 队列集合
先进的先出,后进的后出
没有索引
Queue qq = new Queue();
qq.Enqueue(1);//给集合中添加元素
qq.Enqueue(2);
qq.Enqueue(3);
qq.Enqueue(4);
qq.Enqueue(5);

qq.Dequeue();//将排在最前面的剔除
int c =qq.Count;//统计个数

qq.Peek();//只查看,不踢出

qq.Clear();//清空集合
bool bb =qq.Contains(3);//判断是否包含这个元素

foreach (object b in qq)
{
Console.WriteLine(b);
}

Console.ReadLine();

foreach 遍历集合
foreach (object aa in name)
{
Console.Write(aa+"\t");
}

Console.ReadLine();

object a;
int b = 4;
a = b;
double c = 3.14;
a = c;
bool d = true;
a = d;
string e = "Hello";
a = e;
DateTime dt = DateTime.Now;
a = dt;

课后题
输入班级人数,输入每个人的姓名、语数英成绩进入集合
求语文的总分,数学的平均分,
英语的最高分的人的姓名及所有科目的分数(冒泡排序)
0 姓名 4 8 12
1 语文成绩5 9 13
2 数学成绩6 10 14
3 英语成绩7 11 15
Console.Write("请输入班级人数:");
int n = int.Parse(Console.ReadLine());
double yu = 0;
double shu = 0;
ArrayList al = new ArrayList();
for (int i = 0; i < n; i++)
{
Console.Write("请输入第{0}个人的姓名:",i+1);
al.Add(Console.ReadLine());
Console.Write("请输入第{0}个人的语文成绩:",i+1);
al.Add(double.Parse(Console.ReadLine()));
yu += double.Parse(al[al.Count - 1].ToString());
Console.Write("请输入第{0}个人的数学成绩:", i + 1);
al.Add(double.Parse(Console.ReadLine()));
shu += double.Parse(al[al.Count - 1].ToString());
Console.Write("请输入第{0}个人的英语成绩:", i + 1);
al.Add(double.Parse(Console.ReadLine()));
}
Console.WriteLine("所有信息输入完毕,请按回车键继续!");
Console.ReadLine();
Console.WriteLine("语文的总分是:"+yu);
Console.WriteLine("数学的平均分是:"+(shu/n));

for (int i = 3; i < 4*n-1; i+=4)
{
for (int j = i; j < 4 * n - 4; j += 4)
{
if (double.Parse(al[i].ToString()) < double.Parse(al[j + 4].ToString()))
{
换姓名
object zhong = al[i - 3];
al[i - 3] = al[j + 1];
al[j + 1] = zhong;
换语文
zhong = al[i - 2];
al[i - 2] = al[j + 2];
al[j + 2] = zhong;
换数学
zhong = al[i - 1];
al[i - 1] = al[j + 3];
al[j + 3] = zhong;
换英语
zhong = al[i];
al[i] = al[j + 4];
al[j + 4] = zhong;
}
}
}
Console.WriteLine("英语最高分的学生是{0},英语分数是{1},语文分数是{2},数学分数{3}",al[0],al[3],al[1],al[2]);
Console.ReadLine();