集合的基本信息:
System.Collections 系统类中的收藏类,定义各种对象(如列表,队列,位数组,哈希表和字典)的集合
常用的集合为ArrayList类;特殊集合一般会用到Queue队列集合、Stack栈集合哈有Hashtable哈希表集合。
集合和数组的区别:数组是连续的同一类型数据。集合可以是不连续的多种数据类型。
ArrayList:
ArrayList和Array的区别:
相同点:1.两者都实现了IList、ICollection、IEnumerable接口;
2.两者都可以使用证书索引访问集合中的元素,包括读取和赋值,且集合中的索引都从0开始。
不同点:1.ArrayList是集合而Array是数组;
2.ArrayList是具体类而Array是抽象类;
3.数组必须在实例化时指定元素的数量,改数量一旦确定就不可以更改了。而ArrayList扩展了这一点,当实例化时可以不指定集合元素数
4.获取数组的元素时使用Length属性,而获取ArrayList集合的元素数使用Count属性;
5.数组可以多维,而ArrayList只能是一维。
ArrayList al = new ArrayList(); al.Add(5); //添加元素 al.Add(7); al.Add(6); Console.WriteLine(al.Count);//打印al的元素个数 al.Insert(1, 8);//在索引1的位置插入元素8. for (int i = 0; i < 3; i++) { Console.WriteLine(al[i]); }
![](https://images2015.cnblogs.com/blog/1034378/201610/1034378-20161016163155952-1795643534.png)
ArrayList al = new ArrayList(); al.Add(5); //添加元素 al.Add(7); al.Add(6); al.Add(7); al.Add(6); al.Remove(7);//把从索引为0开始的第一个数据为7的剔除 al.RemoveAt(3);//把索引为3的数据剔除 for (int i = 0; i < 3; i++) { Console.WriteLine(al[i]); }
![](https://images2015.cnblogs.com/blog/1034378/201610/1034378-20161016163616452-1402585881.png)
ArrayList al = new ArrayList(); al.Add(5); //添加元素 al.Add(7); al.Add(6); al.Add(11); al.Add(8); al.Add(3); al.Sort();//排序,升序 for (int i = 0; i < 6; i++) { Console.WriteLine(al[i]); }
![](https://images2015.cnblogs.com/blog/1034378/201610/1034378-20161016163932795-2023585611.png)
ArrayList al = new ArrayList(); al.Add(5); //添加元素 al.Add(7); al.Add(6); al.Add(11); al.Add(8); al.Add(3); al.Sort(); al.Reverse();//翻转语句,执行之后变降序 for (int i = 0; i < 6; i++) { Console.WriteLine(al[i]); }
![](https://images2015.cnblogs.com/blog/1034378/201610/1034378-20161016164232499-1939342950.png)
手机号抽奖
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 ArrayList al = new ArrayList(); 2 for (int i = 0; ; i++) 3 { 4 Console.Write("请输入手机号:"); 5 string a = Console.ReadLine(); 6 if (a == "完成") 7 { 8 break; 9 }10 al.Add(a);11 }12 Console.WriteLine("输入完毕,请按回车进行抽奖!");13 Console.ReadLine();14 Random ran = new Random();15 for (int i = 0; i < 30; i++)16 {17 int b = ran.Next(0, al.Count);18 Console.Clear();19 Console.Write(al[b]);20 System.Threading.Thread.Sleep(100);21 }22 //Console.Clear();23 //Console.Write("18953370733"); //作弊
//输入班级人数,输入每人的姓名语数英成绩再打印出来,求语文两个最高分,数学两个最低分,英语平均分
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 ArrayList al = new ArrayList(); 2 Console.Write("输入班级人数:"); 3 int n = int.Parse(Console.ReadLine()); 4 for (int i = 0; i < n; i++) 5 { 6 Console.Write("请输入第{0}个人的姓名:", i + 1); 7 al.Add(Console.ReadLine()); 8 Console.Write("请输入第{0}个人的语文成绩:", i + 1); 9 al.Add(Console.ReadLine());10 Console.Write("请输入第{0}个人的数学成绩:", i + 1);11 al.Add(Console.ReadLine());12 Console.Write("请输入第{0}个人的英语成绩:", i + 1);13 al.Add(Console.ReadLine());14 15 }16 Console.WriteLine("输入完毕");17 double sum = 0;18 for (int i = 3; i < 4 * n; i += 4)19 {20 sum += double.Parse(al[i].ToString());21 }22 double avg = sum / n;23 for (int i = 1; i < 4 * n - 4; i += 4)24 {25 for (int j = i + 4; j < 4 * n; j += 4)26 {27 if (double.Parse(al[i].ToString()) < double.Parse(al[j].ToString()))28 {29 Object t1 = al[i];30 al[i] = al[j];31 al[j] = t1;32 Object t2 = al[i - 1];33 al[i - 1] = al[j - 1];34 al[j - 1] = t2;35 Object t3 = al[i + 1];36 al[i + 1] = al[j + 1];37 al[j + 1] = t3;38 Object t4 = al[i + 1];39 al[i + 2] = al[j + 2];40 al[j + 2] = t4;41 }42 }43 }44 Console.WriteLine("语文两个最高分为{0}的{1}分,{2}的{3}分", al[0], al[1], al[4], al[5]);45 for (int i = 2; i < 4 * n - 4; i += 4)46 {47 for (int j = i + 4; j < 4 * n; j += 4)48 {49 if (double.Parse(al[i].ToString()) > double.Parse(al[j].ToString()))50 {51 Object t1 = al[i];52 al[i] = al[j];53 al[j] = t1;54 Object t2 = al[i - 1];55 al[i - 1] = al[j - 1];56 al[j - 1] = t2;57 Object t3 = al[i + 1];58 al[i + 1] = al[j + 1];59 al[j + 1] = t3;60 Object t4 = al[i - 2];61 al[i - 2] = al[j - 2];62 al[j - 2] = t4;63 }64 }65 }66 Console.WriteLine("数学两个最低分为{0}的{1}分,{2}的{3}分", al[0], al[2], al[4], al[6]);67 Console.WriteLine("英语平均分为{0}", avg);