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,字符数组默认值为’\0’,字符串默认值为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("\n");
 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("\n");
 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         }

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:要移除的元素数

时间: 2024-10-14 10:01:04

C#数组和集合的相关文章

C#语言中数组和集合

数组.集合→用于储存多个同类型的数据数组 定长→用于保存固定数量的数据 在功能上,数组能实现的所有功能,集合都能实现:反之,集合能实现的某些功能,数组难以实现 占用内存少 便利速度快集合 不定长→保存的数据数量,可以在程序的执行过程中,发生变化 占用内存多 便利速度慢课时六:数组和集合 数组.集合→用于储存多个同类型的数据 数组 定长→用于保存固定数量的数据 在功能上,数组能实现的所有功能,集合都能实现:反之,集合能实现的某些功能,数组难以实现 占用内存少 便利速度快 集合 不定长→保存的数据数

.NET 基础 一步步 一幕幕[数组、集合、异常捕获]

数组.集合.异常捕获 数组: 一次性存储多个相同类型的变量. 一维数组: 语法: 数组类型[] 数组名=new 数组类型[数组长度]; 声明数组的语法: A.数据类型 [] 数组名称= new 数据类型[2]{1,2}: B.数据类型 [] 数组名称 = new 数据类型[数组大小]; C. 数据类型 [] 数组名称 = {数据,数据,数据,数据}; ***数组的长度一旦固定了,就不能再被改变了 可以通过索引来访问数组中的元素: 数组名称[索引位置] 案例: 多维数组:多个线性数组的值 二维:i

非计算机专业的码农C#学习笔记 五、数组和集合

数组和集合 1.数组问题Array (1)一维数组:int[] arr={1,2,3,5,5} string[] s={s,l,s,g} (2)二维数组:int[,] arr=new int[2,2]{{1,2},{3,4}} 类型[,] 数组名=new 类型[行数(元素数),列数(元素的子元素数]{{元素1,元素2},{元素…},…,} l  动态数组:类型[,] 数组名=new 类型[M,N],int M=””;int N=””; l  查看内部元素:foreach(int n in arr

集合转数组,数组转集合,集合中只可以装引用数据类型

1 package com.pang.jihe_demo; 2 3 import java.util.ArrayList; 4 import java.util.Arrays; 5 import java.util.List; 6 7 public class Demo01 { 8 public static void main(String[] args) { 9 //集合转数组,集合中只可以装引用数据类型 10 ArrayList<Integer> list = new ArrayList

java中有关数组或集合的起始位详解

在jdbc连接数据库时,起始位都是从1开始的 例如:Class.forName("com.mysql.jdbc.Driver"); conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis", "root", "ms"); String sql="SELECT * FROM users WHERE NAME=?"; pstm=

数组与集合List的相互转化

数组转化为集合 #此运用的是Arrays中的asList方法,返回一个List集合 *当数组元素为基本数据类型是把整个数组当作一个元素放入List集合中,代码举例: int[] a = {1,2,3}; List<int[]> list = Arrays.asList(a);//asList是静态方法 *当数组元素为对象时,是把数组的每个元素分别放入List集合当中,代码举例: String[] s = {"ni", "hao"}; List<St

前端C#基础:数组与集合

学习web前端是一个带有一点小乐趣的过程.它是与理科思维比较相关联的,所以学习好他就必须掌握牢固的基础,对基础知识的细节要了解.下面我就总结两个我们经常用到,但又因为他们定义与用法都比较相近,而经常搞混的知识点:集合与数组. 数组与集合 相同点: 1.一个数组类型变量可以存放多个同类型的数据.2.数组项的编号称为索引或下标.3.数组的索引(下标)是一个int类型的数字,从0开始.   依次为每一个数组项编号. 4. 数组(集合)项:  变量名[ n ] 5.数组(集合)项的读取: 变量名[ 索引

java 基本数据类型数组与集合之间相互转换

Arrays工具类的asList()方法的使用* A:案例演示 * Arrays工具类的asList()方法的使用 * Collection中toArray(T[] a)泛型版的集合转数组 数组转集合 :  Arrays工具类的asList()方法的使用  public static void demo2() { //int[] arr = {11,22,33,44,55}; //List<int[]> list = Arrays.asList(arr); 基本数据类型的数组转换成集合,会将整

数组和集合的相互转换

1.集合转换为数组 package cn; import java.util.ArrayList; /**  * 集合转换为数组  */ public class ListToArrayDemo { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); list.add("hello"); list.add("world&qu

C#不允许在foreach循环中改变数组或集合中元素的值(注:成员的值不受影响)

C#不允许在foreach循环中改变数组或集合中元素的值(注:成员的值不受影响),如以下代码将无法通过编译. foreach (int x in myArray) { x++; //错误代码,因为改变了元素的值 Console.WriteLine(x); } 如果要让自定义的数据类型支持foreach循环,则该类型必须实现IEnumerable<T>接口,且存在对应此列表的IEnumerator<T>实现. 实际上,在.Net的底层(IL语言层面)而言, foreach (var