壹.
1.System Collections命名空间包含接口和类,这些接口和类定义各种对象的集合;
2.集合与数组的区别;数组是连续的,同一类型的数据的一块区域,而集合是可以不连续的,多种数据类型的;
3.Arraylist实现了与 Ilist ICollection IEnumberable 接口
4.Arraylist是具体类,array是抽象类;
5.数组必须在实例化时指定元素数量,该数量一旦确定就不可更改,而ArrayList 当实例化一个arraylist 实例时可以不指定几何元素数(有默认的初始容量),当然你可以指定初始容量;
6.获取数组的元素数时使用length属性,而获取arraylist集合的元素数时使用Count属性;
5.数组可以有多维,而arraylist只能是一维。
贰:例题:
1.手机号抽奖
1 ArrayList TL = new ArrayList();--------与array区别 可以不指定元素数 2 for (; ; ) 3 { 4 Console.WriteLine("输入手机号"); 5 string a = Console.ReadLine(); 6 if (a == "完成") 7 { 8 break; 9 } 10 TL.Add(a); //每个索引对应 一个字符串 把字符串放在 数组里面! 11 } 12 13 Console.WriteLine("回车键进行抽奖"); 14 Console.ReadLine(); 15 Console.Clear(); 16 17 18 Random r = new Random(); 19 20 for (int j = 0; j < 3000; j += 100) 21 { 22 int c = r.Next(TL.Count); 23 24 Console.Clear(); 25 Console.WriteLine(TL[c]); 26 27 System.Threading.Thread.Sleep(100); // ----------每隔100毫秒暂停一次 28 }
例题1
2.按着语文成绩排序
Console.WriteLine("输入班级人数"); int n = int.Parse(Console.ReadLine()); ArrayList q = new ArrayList(); for (int i = 0; i < n; i++) { Console.WriteLine("输入第{0}个人的姓名:", i + 1); q.Add(Console.ReadLine()); Console.WriteLine("输入第{0}个人的语文成绩:", i + 1); q.Add(Console.ReadLine()); Console.WriteLine("输入第{0}个人的数学成绩:", i + 1); q.Add(Console.ReadLine()); Console.WriteLine("输入第{0}个人的英语成绩:", i + 1); q.Add(Console.ReadLine()); Console.WriteLine(); } Console.Clear(); Console.WriteLine("按照语文成绩进行排序"); Console.ReadLine(); for (int i = 1; i < 4 * n - 3; i += 4)---------------------集合一维 { for (int j = i + 4; j < 4 * n; j += 4) { if (int.Parse(q[i].ToString()) < int.Parse(q[j].ToString()))//object转化为字符串在转化为其他(因为添加的字符串 添加后默认object) { object a; a = q[i - 1]; q[i - 1] = q[j - 1]; q[j - 1] = a; object b; b = q[i + 1]; q[i + 1] = q[j + 1]; q[j + 1] = b; object c; c = q[i + 2]; q[i + 2] = q[j + 2]; q[j + 2] = c; } } } foreach (object aa in q) { Console.WriteLine(aa); } Console.ReadLine();
用集合的方法(集合只能是一维的)
3.Arraylist小知识点
实例化 初始化 ArrayList al = new ArrayList();-------不需指明元素容量 //add方法才是真的添加 al.Add(4); al.Add(6); al.Add(19); al.Add(4); al.Add(3); //在某个索引号上插入某个元素 al.Insert(2,"Hello"); 个数 Console.WriteLine(al.Count); al[0]这种赋值方式,仅仅适用于修改 al[0] = 3; 清空集合 al.Clear(); 克隆集合 ArrayList al1 = (ArrayList)al.Clone(); 判断是否包含某个元素 bool a = al.Contains(3); Console.WriteLine(a); 获取第一次出现该元素的索引号 Console.WriteLine(al.IndexOf(4)); 获取最后一次出现该元素的索引号 Console.WriteLine(al.LastIndexOf(4)); 移除第一个匹配元素 al.Remove(4); 移除某个索引位置上的元素 al.RemoveAt(4); Console.WriteLine(al[0]); 数组的定义:数据类型 总长度 遍历集合 foreach(int aa in al) { Console.WriteLine(aa); } Console.WriteLine("--------------------------------------------"); //排序 升序 al.Sort(); //遍历集合 foreach (int aa in al) { Console.WriteLine(aa); } Console.WriteLine("--------------------------------------------"); //排为降序 //翻转集合 al.Reverse(); //遍历集合 foreach (int aa in al) { Console.WriteLine(aa); } 在有不同数据类型的时候需要遍历集合 foreach(object aa in al) { Console.WriteLine(aa); } object 所有数据类型的基类 int a = 5; object aa = a; aa = "string类型"; aa = true; aa = DateTime.Parse("2008/8/8"); aa = al; System.Threading.Thread.Sleep(3000);
小知识点
4.特殊集合
1. Stack 干草堆集合 栈集合 一个一个赋值 一个一个取值 先进后出 实例化 初始化 Stack st = new Stack(); //添加元素 st.Push(2); st.Push(6); st.Push(9); st.Push(5); st.Push(1); //个数 //Console.WriteLine(st.Count); //只要使用一次pop方法,就会从最后一个元素开始排除 弹出 //Console.WriteLine(st.Pop()); //只想查看不弹出 //Console.WriteLine(st.Peek()); //遍历集合 foreach(int aa in st) { Console.WriteLine(aa); } //Console.WriteLine(st.Count); queue队列集合 先进先出 实例化 初始化 Queue que = new Queue(); //添加元素 que.Enqueue(5); que.Enqueue(2); que.Enqueue(9); que.Enqueue(8); que.Enqueue(1); //移除一个元素 从头开始 que.Dequeue(); //个数 //Console.WriteLine(que.Count); //遍历集合 foreach(int aa in que) { Console.WriteLine(aa); } HashTable 哈希表集合 先进后出 一个一个赋值,但是只能一起取值 实例化 初始化 Hashtable ht = new Hashtable(); 添加元素 ht.Add(1, "张三"); ht.Add(2, "李四"); ht.Add(3, "王五"); ht.Add(4, "赵六"); ht.Add(5, "冯七"); ht.Add(6, "钱八"); 读取 foreach (object aa in ht.Keys)//单纯的存储key的集合 { Console.WriteLine(aa); } foreach (string bb in ht.Values) { Console.WriteLine(bb); } 使用枚举类型进行读取,排列成表格 IDictionaryEnumerator ide = ht.GetEnumerator(); while(ide.MoveNext()) { Console.WriteLine(ide.Key+"\t"+ide.Value); }
特殊集合知识点
时间: 2024-10-06 01:08:53