zoukankan      html  css  js  c++  java
  • C#集合类型——Array、ArrayList、List 之浅谈

    在学习或工作中,集合是经常用到的,可以换一句话说“无项目无集合”,“项目皆有集合”。它一般存储一系列数据或者将一系列数据进行相关操作。在这里先大略谈一些集合类型的相关知识用于回顾。

    数组(Array)

    数组一般只存储一种类型的数据,有一维数组,二维数组等多维数组。都基于System.array类。

    格式:type[]  typename;  type指类型,typename指数组名称。

    一维数组有多种书写形式:

    int [] a={1,2,3};

    int [] b=new int[]{1,2,3};

    int [] c;  c=new int[]{1,2,3};

    int [] d=new int[3];d[0]=1;d[1]=2;d[2]=3;

    二维数组:相当于表格

    int[,] e=new int[2,2];  e[0,0]=1;e[0,1]=2;e[1,0]=3;e[1,1]=4;//两行两列

    int[,] f=new int[2,2]{{1,2},{3,4}};//已知行列数

    int[,] f=new int[,]{{1,2},{3,4}};//未知行列数,根据后面的初始化来规定行列数

    三维 类推,相当于四方体。

    交错数组:相当于一维数组的每一个元素又是一个数组。常称为,数组的数组。

    int[][] h=new int [2][]{new int[]{2,4,6},new int[]{1,2,3,4,5}};

    int[][] i=new int[][]{new int[]{2,4,6},new int[]{1,2,3,4,5}};

    int[][] j={new int[]{2,4,6},new int[]{1,2,3,4,5}};

    int[][] k=new int[2][]; k[0]=new int[3]{2,4,6}; k[1]=new int[5]{1,2,3,4,5};

    则,k[0][0]=2;k[0][1]=4;k[1][2]=3;....

    int[][,] m=new int [2][,]

    {   new int[,] {{1,3},{5,7}},new int[,]{{0,2},{4,6}}}

    数组常用操作

    (1)遍历数组

    int [] a={1,2,3};

    foreach(int n in a){Console.WriteLine(n);}

    结果输出 1 2 3

    (2)数组字符串之间转换

    string[]  sArr1={"123","456","789"};

    string   str1=sArr1.Join(",");//结果为字符串:123,456,789

    string[]  sArr2=str1.Split(',');//字符串转化为string数组,去掉分隔符“,”,转化维数组

    -----------------------------------------------

    string  str2="abc 12,65;8"

    string []  sArr2=str2.Split(',' ,' ' ,';');

    ----------------------------------------------

    string s="13mnnfsj";

    char[]  a=s.TocharArray();\将字符串转化为char数组。

    (3)常用函数

    int[] a={1,2,3,4};

    a.Sum();//总和;  a.Average();  a,Min();   a.Max();

    (4)排序、复制、查找

    int  []a={1,2,3};

    int  []b=new int[a.Length];  

    Array.Copy(a,b,a.Length);//将a数组复制到b数组

    Array.Sort(a);//将a数组升序排列

    Array.Reverse(a);//将a数组反转排序

    使用Contains方法和IndexOf方法查找指定的元素。

    ArrayList类

    相当于一种高级动态数组。using System.Collections.Generic;它比数组更高级,可以动态的删除和添加元素并且它的容量可以扩充,但是它只有一维的形式。一般有三种构造方式。

    一,默认的大小(16)来初始化

    ArrayList arr=new ArrayList ();

    二,将一个集合元素添加ArrayList 中

    int[] a=new int[]{1,2,3};

    ArrayList arr1=new ArrayList (a);

    三,指定大小来初始化,

    ArrayList arr2=new ArrayList (100);

    常用属性:略,在VS里,比如输入 以上的arr2.时就会显示其属性和说明。

    常用方法

    int[] a=new int[]{1,2,3};

    ArrayList arr1=new ArrayList (a);

    (一)增加

    1,Add(元素);方法,

    arr1.Add(7);// arr1元素为1 2 3 7

    2,Insert(索引,元素);方法//索引从0开始

    arr1.Insert(1,7);// arr1元素为1 7 2 3

    (二)删除

    1,Clear()方法//删除所有

    arr1.Clear();//arr1为空了。

    2.Remove(匹配对象)方法//移除首次匹配对象

    arr1.Remove(3);//arr1元素为1 2

    3,RemoveAt(索引)方法//删除索引对应的元素

    arr1.RemoveAt(1);//arr1元素为1 3

    4,RemoveRange(索引,范围)方法//从索引处删除一定范围的数

    arr1.RemoveRange(1,2);//arr1元素为1

    (三)遍历

    同数组一样

    (四)查找

    Contains(元素);方法

    arr1.Contain(3);//判断arr1是否包含3这个元素,包含,为True ;不包含为 False

    List

    using System.Collections.Generic; 它是将ArrayList 规定了类型,提高编码质量,较少了类型之间的错误。在这里大略讲解一下一般List的用法,在以后将会深入研究泛型List的运用。

    List <int> lis1=new List<int>();

    (一)添加

    lis1.Add(500);//直接添加一串元素

    list1.AddRange(new int[]{501,502});//添加一串元素。

    (二)插入,删除,查找等一系列操作与上面 ArrayList和Array相似。

    --------------------------------------------

    规定类型也可以为自定义类型,比如:

    1,先见一个Person类

       class Person {
            public string name ;
            public string Name {
            get{return name;}
                set { value = name; }
            }
        }

    2,创建Person对象

     Person p = new Person();
                p.name = "Chen";
                Person p1 = new Person();
                p1.name = "Li";
                Person p2 = new Person();
                p2.name = "Zhang";

    3,创建Person类型的集合并将Perosn对象放入集合

      List <Person>Li=new List<Person>();
                Li.Add(p);
                Li.Add(p1);
                Li.Add(p2);


                Console.WriteLine(Li[0].name);//输出集合的第一个元素,结果为:Chen。

  • 相关阅读:
    shell脚本查找tcp过多ip地址封掉
    tomcat日志传参乱码问题
    nginx部署vue跨域proxy方式
    nginx部署VUE跨域访问api
    springboot2.1.3 + redisTemplate + Lock 操作 redis 3.0.5
    java8 lamb表达式对List排序
    Mysql5.7降级到5.6遇到的坑
    mac中git使用
    mac中git flow使用
    mac安装openjdk8-maven-mysql-git-docker
  • 原文地址:https://www.cnblogs.com/anyihen/p/5456964.html
Copyright © 2011-2022 走看看