集合:很多数据的一个集合
数组:长度不可变,类型单一
集合的好处:长度可以任意改变,类型随便

  1. using System;
  2. using System.Collections;
  3. namespace _062_ArrayList集合
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. //创建了一个集合对象
  10. ArrayList list = new ArrayList();
  11. //集合:很多数据的一个集合
  12. //数组:长度不可变,类型单一
  13. //集合的好处:长度可以任意改变,类型随便
  14. list.Add(1);
  15. list.Add(2.2);
  16. list.Add(true);
  17. list.Add("微咲");
  18. list.Add(new int[] { 1, 2, 3, 4, 5, 6, 7 });
  19. Person person = new Person();
  20. list.Add(person);
  21. list.Add(list);
  22. for (int i = 0; i < list.Count; i++)
  23. {
  24. if (list[i] is Person)
  25. {
  26. ((Person)list[i]).SayHello();
  27. }
  28. else if (list[i] is int[])
  29. {
  30. for (int j = 0; j < ((int [])list[i]).Length; j++)
  31. {
  32. Console.WriteLine(((int [])list[i])[j]);
  33. }
  34. }
  35. else if (list[i] is ArrayList)
  36. {
  37. for (int k = 0; k < ((ArrayList)list[i]).Count; k++)
  38. {
  39. Console.WriteLine(((ArrayList)list[i])[k]);
  40. }
  41. }
  42. else
  43. {
  44. Console.WriteLine(list[i]);
  45. }
  46. }
  47. Console.ReadKey();
  48. }
  49. }
  50. }

image.png

集合的方法

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);//判断是否包含某个指定得到元素

  1. using System;
  2. using System.Collections;
  3. namespace _064_ArrayList集合方法
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. ArrayList list = new ArrayList();
  10. //添加单个元素
  11. list.Add(111);
  12. list.Add(222);
  13. list.Add(333);
  14. list.Add(444);
  15. list.Add(555);
  16. list.Add(666);
  17. list.Add(2.2);
  18. list.Add(true);
  19. list.Add(true);
  20. //添加集合元素
  21. list.AddRange(new int[] { 1, 2, 3, 4, 5, 6, 7, 8 });
  22. //list.AddRange(list);
  23. //list.Clear();//删除所有元素,没有返回值
  24. //list.Remove(true);//删除单个指定元素
  25. //list.RemoveAt(0);//根据下标(索引)删除
  26. //list.RemoveRange(1, 2);//根据下标移除一定范围内的元素
  27. //list.Reverse();//反转
  28. //list.Sort();//升序排序,数据差不多是可以执行
  29. list.Insert(5, "插入");//将元素插入到指定的下标位置(在指定索引位置插入元素)
  30. list.InsertRange(0, new string[] { "我", "爱", "你" });//在指定索引位置插入一个集合
  31. bool b = list.Contains(true);//判断是否包含某个指定得到元素
  32. Console.WriteLine(b);
  33. if (!list.Contains("微咲"))
  34. {
  35. list.Add("微咲");
  36. }
  37. else
  38. {
  39. Console.WriteLine("已经存在");
  40. }
  41. for (int i = 0; i < list.Count; i++)
  42. {
  43. Console.WriteLine(list[i]);
  44. }
  45. Console.WriteLine(list.Count);
  46. Console.WriteLine(list.Capacity);
  47. Console.ReadKey();
  48. }
  49. }
  50. }

ArrayList集合的长度问题

每次集合中实际包含的元素个数(count)超过了可以包含元素的个数(capcity)的时候,集合就会向内存中申请多开一倍的空间,来保证集合的长度一直够用。


集合的练习:

  1. using System;
  2. using System.Collections;
  3. namespace _065_集合的练习
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. //1、创建一个集合,里面添加数字,求平均值、和、最大值、最小值
  10. ArrayList list = new ArrayList();
  11. list.AddRange(new int[] { 2, 5, 3, 7, 9, 6, 8, 0, 1, 4 });
  12. int sum = 0;
  13. int max = (int)list[0];
  14. int min = (int)list[0];
  15. for (int i = 0; i < list.Count; i++)
  16. {
  17. if ((int)list[i] > max)
  18. {
  19. max = (int)list[i];
  20. }
  21. if ((int)list[i] < min)
  22. {
  23. min = (int)list[i];
  24. }
  25. sum += (int)list[i];
  26. }
  27. Console.WriteLine("Sum:{0},Average:{1},Max:{2},Min:{3}", sum, sum / 10, max, min);
  28. //2、写一个长度为10的集合,要求在里面随机存放10个数字(0-9)不重复
  29. ArrayList list1 = new ArrayList();
  30. Random r = new Random();
  31. for (int i = 0; i < 10; i++)
  32. {
  33. int rNumber = r.Next(0, 10);
  34. if (!list1.Contains(rNumber))
  35. {
  36. list1.Add(rNumber);
  37. }
  38. else
  39. {
  40. i--;
  41. }
  42. }
  43. for (int i = 0; i < list1.Count; i++)
  44. {
  45. Console.WriteLine(list1[i]);
  46. }
  47. Console.ReadKey();
  48. }
  49. }
  50. }