十三、特殊集合
(一)定义
1、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());//仅用来查看最后一位,不踢出
Console.WriteLine(aa.Pop());//弹出,踢出最后一个进入集合的数据
int aaa = aa.Count;//统计个数
aa.Clear();//清空集合
foreach (object a in aa){ Console.WriteLine(a);}
Console.ReadLine();
2、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();
3、哈希表
Hashtable hashtable=new Hashtable();
hashtable.Add(0,"**")//添加元素,“,”前的为key,是添加的元素的键;“,”后的为value,是添加的元素的值,此值可以为空引用。
hashtable.Clear();//移除Hashtable中的元素。
hashtable.Remove(0);//移除Hashtable中指定的元素,Remove()的括号中填的是key。
Console.WriteLine(hashtable.Contains(0));//判断Hashtable中是否包含指定的键。
Console.WriteLine(hashtable.ContainsValue("**"));//判断Hashtable中是否包含指定的键值。
(二)例题
1、输入班级人数,根据人数创建集合ArrayList,先存人名,紧跟着分数,向表格一样打印,前面是人名,后面是成绩。
主要代码:
Console.Write("请输入班级人数:"); int n = int.Parse(Console.ReadLine()); Console.WriteLine(); ArrayList grade = new ArrayList(); for (int i = 0; i < n; i++)//法一 { Console.Write("请输入姓名:"); string name = Console.ReadLine(); grade.Add(name); } Console.WriteLine(); for (int i = n; i < 2 * n; i++) { Console.Write("请输入分数:"); double score = double.Parse(Console.ReadLine()); grade.Add(score); } Console.WriteLine(); Console.WriteLine("姓名\t分数"); for (int i = 0; i < n; i++) Console.WriteLine(grade[i] + "\t" + grade[n + i]); Console.WriteLine(); for (int i = 0; i < 2 * n; i++)//法二 { if (i == 0) { Console.Write("请输入姓名:"); string name = Console.ReadLine(); grade.Add(name); } else if (i % 2 == 0) { Console.Write("请输入姓名:"); string name = Console.ReadLine(); grade.Add(name); } else { Console.Write("请输入分数:"); double score = double.Parse(Console.ReadLine()); grade.Add(score); } } Console.WriteLine(); Console.WriteLine("姓名\t分数"); for (int i = 0; i < 2 * n; i++) { if (i == 0) Console.Write(grade[i] + "\t"); else if (i % 2 == 0) Console.Write(grade[i] + "\t"); else Console.Write(grade[i] + "\n"); } Console.WriteLine(); Console.ReadLine();结果:
1、
2、
转载于:https://www.cnblogs.com/bosamvs/p/5483295.html