二、数组和ArrayList

  • 数组
      • 什么是数组?

    数组是一种相同数据类型按顺序在内存中排列的集合。数组是Array的一个对象,属于引用类型,在栈中只存有数组首元素的地址。这样,使用数组就比定义多个变量要节省空间。

    • 一维数组
        1. 判断一个类型是否是数组
        2. static void Main(string[] args)
                  {
                      int[] array = new int[12];
                      Type type = array.GetType();
                      if (type.IsArray)
                          Console.WriteLine("This array type is:{0}",type);
                      else
                          Console.WriteLine("Not an array");
                  }

          2. 使用可变参数 param,计算一组数据的总和

          static void Main(string[] args)
                  {
                      Console.WriteLine(sumNums(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
                      Console.WriteLine(sumNums(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15));
                  }
                  static int sumNums(params int[] nums)
                  {
                      int sum = 0;
                      for (int i = 0; i <= nums.GetUpperBound(0); i++)
                      {
                          sum += nums[i];
                      }
                      return sum;
                  }
    • 二维数组
      • 使用二维数组计算一组数据的平均值
      • static void Main(string[] args)
                {
                    int[,] grades = new int[,] 
                    {
                    {1, 82, 74, 89, 100},
                    {2, 93, 96, 85, 86},
                    {3, 83, 72, 95, 89},
                    {4, 91, 98, 79, 88}
                    };
                    //获得二维数组的行和列
                    int rownum = grades.GetUpperBound(0), colnum = grades.GetUpperBound(1);
                    int total ;
                    for (int row = 0; row <= rownum; row++)
                    {
                        total = 0;
                        for (int col = 0; col <= colnum; col++)
                        {
                            total+=grades[row, col];
                        }
                        Console.WriteLine("Average:{0}",total/colnum);
                    }
                }
    • 锯齿数组
      • 什么是锯齿数组?为什么要有锯齿数组?
      • 二维数据:可以比作正方形或者矩形,它的每行都是有相同列的。
        锯齿数组:可以比作一个不规则的图形,行中的每列又是一个一位数组
        用途:一年有12个月,每个月有不同的天数,有些28天,有些30或31天。该案例如果用二维数组来实现,当中就会产生几个空列,锯齿数据就能满足这种需求。
      • 锯齿数组的遍历(方式一)
      • int[][] array = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6, 7, 8 } };
                    int rownums = array.GetUpperBound(0);//得到锯齿数组的行
                    int colnums;
                    for (int row = 0; row <= rownums; row++)
                    {
                        colnums = array[row].GetUpperBound(0);//得到当前行有N个元素
                        for (int col = 0; col <=colnums; col++)
                        {
                            Console.WriteLine(array[row][col]);
                        }
                    }
      • 锯齿数组的遍历(方式二)
      • int[][] array = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6, 7, 8 } };
                    foreach (var row in array)
                    {
                        foreach (var item in row)
                        {
                            Console.WriteLine(item);
                        }
                    }
  • ArrayList
    •   使用场景
      •   数组:固定不可变的大小
          ArrayList:大小可变。
      • 常用属性和方法
      •  Add( ):向ArrayList添加一个元素。
         AddRange( ):在ArrayList末尾处添加群集的元素。
         Capacity:存储ArrayList所能包含的元素的数量。
         Clear( ):从ArrayList中移除全部元素。
         Contains( ):确定制定的对象是否在ArrayList内。
         Copy To( ):把ArrayList或其中的某一段复制给一个数组。
         Count:返回ArrayList中当前元素的数量。
         GetEnumerator( ):返回迭代ArrayList的计数器。
         GetRange( ):返回ArrayList的子集作为ArrayList。
         IndexOf( ):返回指定数据项首次出现的索引。
         Insert( ):在ArrayList的指定索引处插入一个元素。
         InsertRange( ):从ArrayList指定索引处开始插入群集的元素。
         Item( ):在指定索引处获取或者设置一个元素。
         Remove( ):移除指定数据项的首次出现。
         RemoveAt( ):在指定索引处移除一个元素。
         Reverse( ):对ArrayList中元素的顺序进行反转。
         Sort( ):对ArrayList中的元素按照阿拉伯字母表顺序进行排序。
         ToArray( ):把ArrayList的元素复制给一个数组。
         TrimToSize( ):为ArrayList中元素数量设置ArrayList的容量。
posted @ 2016-04-05 16:41  HUCEMAIL  阅读(78)  评论(0)    收藏  举报