首页 > 代码库 > ArrayList集合&特殊集合
ArrayList集合&特殊集合
一、ArrayList集合 集合内可以放不同类型的元素
另:object类型为所有数据类型的基类
添加元素:.add();
清空集合:al.clear();
克隆集合:.clone();
判断是否包含某个元素:.contains();
获取第一次出现该元素的索引号:.indexof();
获取最后一次出现该元素的索引号:lastindexof();
移除第一个匹配元素:.Remove();
移除某个索引位置上的元素:.RemoveAt();
排序 升序:.sort();
翻转集合:.Reverse();
在有不同数据类型的时候需要遍历集合:用object foreach(object aa in ai )
暂停程序:System.Threading.Thread.Sleep(300); 括号内为毫秒
练习:
1.输入多个号码放到集合中 进行三秒钟的滚动抽奖
ArrayList al = new ArrayList(); for (; ; ) { Console.Write("请输入手机号码(如果要终止,请输入“完成”):"); string a = Console.ReadLine(); if (a == "完成") { break; } al.Add(a); } Console.WriteLine("输入完毕,按回车键开始抽奖。"); Console.ReadLine(); Console.Clear(); Random ran = new Random(); for (int i = 0; i <= 30; i++) { int b = ran.Next(0, al.Count); Console.Clear(); Console.Write(al[b]); System.Threading.Thread.Sleep(100); }
2.输入班级人数 姓名 语数英成绩 输出语文最高分 数学最低分 是谁考的 以及英语平均分
ArrayList al = new ArrayList(); Console.Write("请输入班级人数:"); int a = int.Parse(Console.ReadLine()); for (int i = 0; i < a; i++) { Console.Write("请输入第{0}个人的姓名:", i + 1); al.Add(Console.ReadLine()); Console.Write("请输入第{0}个人的语文成绩:", i + 1); al.Add(Console.ReadLine()); Console.Write("请输入第{0}个人的数学成绩:", i + 1); al.Add(Console.ReadLine()); Console.Write("请输入第{0}个人的英语成绩:", i + 1); al.Add(Console.ReadLine()); } for (int i = 0; i < 4 * a - 4; i += 4) { for (int j = i + 4; j < 4 * a; j += 4) { if (double.Parse(al[i + 1].ToString()) < double.Parse(al[j + 1].ToString())) { object zhong = al[i + 1]; al[i + 1] = al[j + 1]; al[j + 1] = zhong; zhong = al[i]; al[i] = al[j]; al[j] = zhong; zhong = al[i + 2]; al[i + 2] = al[j + 2]; al[j + 2] = zhong; zhong = al[i + 3]; al[i + 3] = al[j + 3]; al[j + 3] = zhong; } } } Console.Clear(); Console.WriteLine("语文成绩最高分是{0},是{1}考的。", al[1], al[0]); for (int i = 0; i < 4 * a - 4; i += 4) { for (int j = i + 4; j < 4 * a; j += 4) { if (double.Parse(al[i + 2].ToString()) > double.Parse(al[j + 2].ToString())) { object zhong = al[i + 1]; al[i + 1] = al[j + 1]; al[j + 1] = zhong; zhong = al[i]; al[i] = al[j]; al[j] = zhong; zhong = al[i + 2]; al[i + 2] = al[j + 2]; al[j + 2] = zhong; zhong = al[i + 3]; al[i + 3] = al[j + 3]; al[j + 3] = zhong; } } } Console.WriteLine("数学成绩最低分是{0},是{1}考的。", al[2], al[0]); double sum = 0; for (int i = 0; i < 4 * a; i += 4) { sum += double.Parse(al[i + 3].ToString()); } Console.WriteLine("英语平均分是:{0}", sum / a);
二、特殊集合
1.stack集合
也叫栈集合、干草堆集合 特点是先进后出 一个一个赋值 一个一个取值 按顺序
添加元素:.push();
弹出元素:.pop();弹出最后一个 并且弹出后 集合内不再有此元素
查看元素:.peek();只查看 不弹出
2.队列集合
queue 特点是先进先出 一个一个赋值 一个一个取值
添加元素:.enqueue();
移除一个元素:.dequeue();从头开始移除
3.哈希表集合
hashtable 哈希表 先进后出 一个一个赋值 但只能一起取值
添加元素:.add(,);一次添加两个元素 一个是key 一个是value
读取:
foreach (object aa in ht.Keys)//单纯的存储Key的集合 { Console.WriteLine(aa); } foreach (object bb in ht.Values) { Console.WriteLine(bb); }
使用枚举类型进行读取,排列成表格:
IDictionaryEnumerator ide = ht.GetEnumerator(); while (ide.MoveNext()) { Console.WriteLine(ide.Key + "\t" + ide.Value); }
注:哈希表集合其实包含两个集合 一个是keys 一个是values
ArrayList集合&特殊集合