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

数组(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。

转载于:https://www.cnblogs.com/anyihen/p/5456964.html

C#集合类型——Array、ArrayList、List 之浅谈相关推荐

  1. C# 集合类型总结,ArrayList,Hastable,List<> 泛型,Dictionary<A, B> 字典集合

    C# 集合类型总结 文章目录 C# 集合类型总结 前言 1. ArrayList 列表集合 1.1 ArrayList集合方法(增删查改) 1.2 遍历ArrayList列表 2. Hastable ...

  2. java 集合反射_关于granite源码包CollectionUtil集合工具类获取集合反射类型、实例化各种集合类型HashSet/ArrayList等...

    一.前言 基于granite源码包org.granite.util.CollectionUtil集合工具类,分别获取集合反射类型java.lang.reflect.Type.实例化newCollect ...

  3. c语言可变入参中的每个参数的类型可以不同,编程入门:浅谈C语言的可变参数

    C语言中有些函数使用可变参数,比如常见的int printf( const char* format, ...),第一个参数format是固定的,其余的参数的个数和类型都不固定. C语言用va_sta ...

  4. C语言布尔类型占几个字节,浅谈C语言中的布尔(bool)类型

    我们知道在C++里有专门的bool类型,用来表示真或假.但是在C语言里没有这样的类型(至少我是一直这么认为的),表达式的值0为假,非0为真.所以条件判断语句( if(-).while(-) )非常灵活 ...

  5. 浅谈Linux PCI设备驱动(二)

    我们在浅谈Linux PCI设备驱动(一)中(以下简称浅谈(一) )介绍了PCI的配置寄存器组,而Linux PCI初始化就是使用了这些寄存器来进行的.后面我们会举个例子来说明Linux PCI设备驱 ...

  6. php wrappers,浅谈PHP源码六:关于stream_get_wrappers函数

    这篇文章主要介绍了关于浅谈PHP源码六:关于stream_get_wrappers函数,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 stream_get_wrappers (PHP ...

  7. arraylist 后往前遍历_Java集合框架之ArrayList

    ArrayList介绍 ArrayList是一个数组列表.与Java数组相比,ArrayList相当于一个动态数组.它继承于AbstractList,实现了List, RandomAccess, Cl ...

  8. 浅谈Java锁,与JUC的常用类,集合安全类,常用辅助类,读写锁,阻塞队列,线程池,ForkJoin,volatile,单例模式不安全,CAS,各种锁

    浅谈JUC的常用类 JUC就是java.util.concurrent-包下的类 回顾多线程 Java默认有几个线程? 2 个 mian.GC Java 真的可以开启线程吗? 开不了,点击源码得知:本 ...

  9. C# 数组增加元素_C#的集合类型及使用技巧

    在日常开发过程中,我们不能避免的要对批量数据处理,这时候就要用到集合.集合总体上分为线性集合和非线性集合.线性集合是指元素具有唯一的前驱和后驱的数据结构类型:非线性集合是指有多个前驱和后驱的数据结构类 ...

最新文章

  1. C# 线程、任务和同步
  2. formdata上传文件_大文件分片断点上传实现思路以及方案
  3. SpringBoot跨域问题解决方案
  4. 怎么查MATLAB中的newrbf,已经有了输入输出数据,如何在matlab中建立RBF神经网络
  5. 拆包--缓冲区查找包头及包尾偏移
  6. 如何正确的开始用 Go 编程
  7. linux read phy reg,请问如后配置嵌入式网卡LAN91C11X系列的自动协商模式(Auto-Negotiation)?...
  8. Deep Learning for Joint Channel Estimation and Feedback in Massive MIMO Systems
  9. 【预测模型】基于BP神经网络实短时交通流预测matlab代码
  10. JS中的迭代器和生成器
  11. Linq两种左连接查询方法
  12. Eureka报错“EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ”
  13. python中获取网页元素
  14. php强类型作用,强类型php性能很彪悍
  15. 引入jq库,却不起效,底线解决方法
  16. 逆向工程实验——pre6(汇编、Android逆向、RSA算法破解)
  17. brew 一直等待_壹配资网门户技术解盘20201104:尿素遇阻回落 铜等待突破-股票外汇期货配资门户...
  18. 计算机网络基础之传输介质
  19. Web前端开发工程师--面试要求
  20. thinkpad X1catbon2019款装系统时无法U盘启动解决办法

热门文章

  1. 根据图片地址得到文件流
  2. 分布式自增ID算法---雪花算法(SnowFlake)Java实现
  3. 使用ETag识别ajax,如何使用jQuery AJAX请求访问ETag头?
  4. 数据库:MySQL高频面试题,大厂必备!
  5. 后端技术:Java 泛型 T,E,K,V的含义,看完本文你就明白了?
  6. Linux有关Shell算数运算的用法补充笔记
  7. 网站 HTTP 升级 HTTPS 完全配置手册
  8. 防止SQL注入式攻击的笔记
  9. vue路由跳转子组件_vue-router之路由钩子(组件内路由钩子必须在路由组件调用,子组件没用)...
  10. linux切换任务命令,Linux top详解之交互命令、命令行选项