集合的基本信息:
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]);
}
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]);
}
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]);
}
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]);
}
手机号抽奖
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"); //作弊
//输入班级人数,输入每人的姓名语数英成绩再打印出来,求语文两个最高分,数学两个最低分,英语平均分
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);