zoukankan      html  css  js  c++  java
  • C#数组和集合

    一维数组

      概述:数组是通过指定数组的元素类型、数组的(秩)维数及数组每个维度上的上限和下限来定义的,及一个数组的定义需要包含以下几个要素。

      类型   数组的维数   每个维的上限下限

      声明:数据类型  标识符  【正整数常量】;

      数组类型是从抽象基类型Array派生的引用类型,通过new运算符创建数组并将数组元素初始化为它们的默认值。

    一维数组的声明和使用:

      静态一维数组:

        它是指数组元素的个数是固定不变的,即它们占用的内存空间大小是不变的。

        一维数组是具有相同数据类型的一维数据类型的集合。

      声明如下:type[ ] arrayName;

      初始化有很多方法:

               1.    int[ ] arr = new int[5];

               2.    int[ ] arr = new int[5]{1,2,3,4,5};

               3.    string[ ] arrstr;

          arrstr = new striing[7]{“sun”,”Mon”,”Tue”,”Wed”,”Thu”,”Fir”,”Sat”};

      动态一维数组

        动态数组的声明实际上就是将数组的声明部分和初始化部分,分别写在不同的语句中,动态数组的初始化也需要使用new关键字为数组元素非配内存空间,为数组元素赋初值。

      动态一维数组元素的声明如下:

        type [ ] arrayName;

        arrayName = new type[n];

        或

        type[ ] arrayname = new type[ ];

      对动态一维数组声明完以后,可以利用Length属性获取数组中元素的总数,并用for语句或foreach语句对数组进行动态赋值。

    二维数组:

      静态二维数组:

      声明语法如下:

        type[,] arrayName;

      注:定义值类型的数组时,其默认值为0(包括整形,单精度,双精度),布尔类型默认值为false,字符数组默认值为’’,字符串默认值为null。

      在声明二维数组的同时直接进行初始化,可以省略new关键字,编译器将根据初始值的数量计算数组长度,并创建二维数组。

      动态二维数组:

      声明语法如下:

        Type[ , ] arrayName;

        arrayName = new type[n1,n2];

        或:

        Type[ , ] arrayName = new type[n1,n2];

      对动态二维数组声明完以后,可以通过给Array类对象的GetLength方法传递不同的参数,来获取二维数组的行数和列数,从而获取到二维数组中的每个元素。

      1 static void Main(string[] args)
      2         {
      3             /*
      4              int[] arr = new int[6];
      5             Console.WriteLine("请输入一维数组:");
      6             for (int i = 0; i < arr.Length; i++)
      7             {
      8                 arr[i] = Convert.ToInt32(Console.ReadLine());
      9             }
     10             Console.WriteLine("显示输入的数组:");
     11             foreach (int item in arr)
     12             {
     13                 Console.Write("{0}",item+",");
     14             }
     15             Console.WriteLine();
     16              */
     17 
     18             /*
     19              int[,] arr = new int[3, 2] {{1,1},{2,2},{3,3} };
     20             Console.Write("数组的行数为:");
     21             Console.WriteLine(arr.GetLength(0));
     22             Console.Write("数组的列数为:");
     23             Console.WriteLine(arr.GetLength(1));
     24             Console.Write("
    ");
     25             for (int i = 0; i < arr.GetLength(0); i++)
     26             {
     27                 string str = "";
     28                 for (int j = 0; j < arr.GetLength(1); j++)
     29                 {
     30                     str = str + Convert.ToString(arr[i, j]) + " ";
     31                 }
     32                 Console.Write(str);
     33                 Console.Write("
    ");
     34             }
     35              */
     36             /*
     37              int row = 0, col = 0;
     38             Console.Write("请输入二维数组的行数:");
     39             row = Convert.ToInt32((Console.ReadLine()));
     40             Console.Write("请输入二维数组的列数:");
     41             col = Convert.ToInt32((Console.ReadLine()));
     42 
     43             Console.WriteLine("请输入二维数组的值:");
     44             int[,] arr1 = new int[row, col];
     45             for (int i = 0; i < arr1.GetLength(0); i++)
     46             {
     47                 for (int j = 0; j <arr1.GetLength(1); j++)
     48                 {
     49                     arr1[i, j] = Convert.ToInt32((Console.ReadLine()));
     50                 }
     51             }
     52 
     53             //显示
     54             Console.WriteLine("显示输入的二维数组:");
     55             for (int i = 0; i < arr1.GetLength(0); i++)
     56             {
     57                 for (int j = 0; j < arr1.GetLength(1); j++)
     58                 {
     59                     Console.Write(arr1[i,j]+" ");
     60                 }
     61                 Console.WriteLine();
     62             }
     63              */
     64             
     65             /*
     66              // 冒泡排序
     67             int[] arr = new int[]{1,4,3,5,7,2,6,10,9,8};
     68             int temp;
     69             Console.Write("排序前:");
     70             foreach (int item in arr)
     71             {
     72                 Console.Write(item+" ");
     73             }
     74             Console.WriteLine();
     75             Console.Write("排序后:");
     76             for (int i = 0; i < arr.Length-1; i++)
     77             {
     78                 for (int j = i+1; j < arr.Length; j++)
     79                 {
     80                     if (arr[i] > arr[j])
     81                     { 
     82                         temp = arr[j];
     83                         arr[j] = arr[i];
     84                         arr[i] = temp;
     85                     }
     86                 }
     87             }
     88             foreach (int item in arr)
     89             {
     90                 Console.Write(item+" ");
     91             }
     92              */
     93             
     94             /*
     95              // 选择排序
     96             int[] arr = new int[] { 10,2,3,6,4,9,8,1,5,7};
     97             Console.Write("排序前:");
     98             foreach (int item in arr)
     99             {
    100                 Console.Write(item+" ");
    101             }
    102             Console.WriteLine();
    103             Console.Write("排序后:");
    104             int min;
    105             for (int i = 0; i < arr.Length-1; i++)
    106             {
    107                 min = i;
    108                 for (int j = i+1; j < arr.Length; j++)
    109                 {
    110                     if (arr[min] > arr[j])
    111                         min = j;
    112                 }
    113                 int temp = arr[i];
    114                 arr[i] = arr[min];
    115                 arr[min] = temp;
    116             }
    117             foreach (int item in arr)
    118             {
    119                 Console.Write(item+" ");
    120             }
    121              */
    122             
    123             Console.WriteLine();
    124             Console.ReadLine();
    125         }
    View Code

    ArrayList集合类:

      ArrayList集合位于System.Collections命名空间下,它可以动态的添加和删除元素,是一种非泛型集合类。ArrayList相当于一种高级的动态数组,它是Array类的升级版本,但它并不等同于数组。

    ArrayList类概述:

       1、数组的容量是固定的,而ArrayList的容量可以根据需要自动扩充

       2、ArrayList提供添加、删除和插入某一范围元素的方法,但在数组中自能一次获取或设置一个元素的值。

       3、ArrayList将提供只读和固定大小包装返回到集合的方法,而数组不提供。

       4、ArrayList只是一维形式,而数组可以是多维的。

    其属性如下:

    Capacity

    获取或设置 ArrayList 可包含的元素数。

    Count

    获取 ArrayList 中实际包含的元素数。

    IsFixedSize

    获取一个值,该值指示 ArrayList 是否具有固定大小。

    IsReadOnly

    获取一个值,该值指示 ArrayList 是否为只读。

    IsSynchronized

    获取一个值,该值指示是否同步对 ArrayList 的访问(线程安全)。

    Item

    获取或设置指定索引处的元素。

    SyncRoot

    获取可用于同步 ArrayList 访问的对象。

    方法:

    添加:

      public virtual int Add (object value);

      public virtual void Insert(int index,object value);

    删除:

      public virtual void Clear();        //清除所有元素

      public virtual void Remove();   //移除特定对象的第一个匹配项

      public virtual void RemoveAt(int index);//移除指定索引处的元素

      public virtual void RemoveRange(int index,int count);//移除指定索引处的元素

      index:起始索引

      count:要移除的元素数

  • 相关阅读:
    前端性能优化——写给网页设计师和前端工程师看的
    V8引擎——详解
    Perl_实用报表提取语言
    qs.stringify和JSON.stringify()
    js之history
    js考察this,作用域链和闭包
    css table之合并单元格
    js手机浏览器浏览WebApp弹出的键盘遮盖住文本框的解决办法
    windows 杀进程
    axios库的使用
  • 原文地址:https://www.cnblogs.com/IamJiangXiaoKun/p/5734159.html
Copyright © 2011-2022 走看看