集合:很多数据的一个集合
数组:长度不可变,类型单一
集合的好处:长度可以任意改变,类型随便
using System;using System.Collections;namespace _062_ArrayList集合{class Program{static void Main(string[] args){//创建了一个集合对象ArrayList list = new ArrayList();//集合:很多数据的一个集合//数组:长度不可变,类型单一//集合的好处:长度可以任意改变,类型随便list.Add(1);list.Add(2.2);list.Add(true);list.Add("微咲");list.Add(new int[] { 1, 2, 3, 4, 5, 6, 7 });Person person = new Person();list.Add(person);list.Add(list);for (int i = 0; i < list.Count; i++){if (list[i] is Person){((Person)list[i]).SayHello();}else if (list[i] is int[]){for (int j = 0; j < ((int [])list[i]).Length; j++){Console.WriteLine(((int [])list[i])[j]);}}else if (list[i] is ArrayList){for (int k = 0; k < ((ArrayList)list[i]).Count; k++){Console.WriteLine(((ArrayList)list[i])[k]);}}else{Console.WriteLine(list[i]);}}Console.ReadKey();}}}
集合的方法
list.Add(111);//添加单个元素
list.AddRange(new int[] { 1, 2, 3, 4, 5, 6, 7, 8 });//添加集合元素
list.Clear();//删除所有元素,没有返回值
list.Remove(true);//删除单个指定元素
list.RemoveAt(0);//根据下标(索引)删除
list.RemoveRange(1, 2);//根据下标移除一定范围内的元素
list.Reverse();//反转
list.Sort();//升序排序,数据差不多是可以执行
list.Insert(5, “插入”);//将元素插入到指定的下标位置(在指定索引位置插入元素)
list.InsertRange(0, new string[] { “我”, “爱”, “你” });//在指定索引位置插入一个集合
bool b = list.Contains(true);//判断是否包含某个指定得到元素
using System;using System.Collections;namespace _064_ArrayList集合方法{class Program{static void Main(string[] args){ArrayList list = new ArrayList();//添加单个元素list.Add(111);list.Add(222);list.Add(333);list.Add(444);list.Add(555);list.Add(666);list.Add(2.2);list.Add(true);list.Add(true);//添加集合元素list.AddRange(new int[] { 1, 2, 3, 4, 5, 6, 7, 8 });//list.AddRange(list);//list.Clear();//删除所有元素,没有返回值//list.Remove(true);//删除单个指定元素//list.RemoveAt(0);//根据下标(索引)删除//list.RemoveRange(1, 2);//根据下标移除一定范围内的元素//list.Reverse();//反转//list.Sort();//升序排序,数据差不多是可以执行list.Insert(5, "插入");//将元素插入到指定的下标位置(在指定索引位置插入元素)list.InsertRange(0, new string[] { "我", "爱", "你" });//在指定索引位置插入一个集合bool b = list.Contains(true);//判断是否包含某个指定得到元素Console.WriteLine(b);if (!list.Contains("微咲")){list.Add("微咲");}else{Console.WriteLine("已经存在");}for (int i = 0; i < list.Count; i++){Console.WriteLine(list[i]);}Console.WriteLine(list.Count);Console.WriteLine(list.Capacity);Console.ReadKey();}}}
ArrayList集合的长度问题
每次集合中实际包含的元素个数(count)超过了可以包含元素的个数(capcity)的时候,集合就会向内存中申请多开一倍的空间,来保证集合的长度一直够用。
集合的练习:
using System;using System.Collections;namespace _065_集合的练习{class Program{static void Main(string[] args){//1、创建一个集合,里面添加数字,求平均值、和、最大值、最小值ArrayList list = new ArrayList();list.AddRange(new int[] { 2, 5, 3, 7, 9, 6, 8, 0, 1, 4 });int sum = 0;int max = (int)list[0];int min = (int)list[0];for (int i = 0; i < list.Count; i++){if ((int)list[i] > max){max = (int)list[i];}if ((int)list[i] < min){min = (int)list[i];}sum += (int)list[i];}Console.WriteLine("Sum:{0},Average:{1},Max:{2},Min:{3}", sum, sum / 10, max, min);//2、写一个长度为10的集合,要求在里面随机存放10个数字(0-9)不重复ArrayList list1 = new ArrayList();Random r = new Random();for (int i = 0; i < 10; i++){int rNumber = r.Next(0, 10);if (!list1.Contains(rNumber)){list1.Add(rNumber);}else{i--;}}for (int i = 0; i < list1.Count; i++){Console.WriteLine(list1[i]);}Console.ReadKey();}}}
