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。
转载于:https://www.cnblogs.com/anyihen/p/5456964.html
C#集合类型——Array、ArrayList、List 之浅谈相关推荐
- C# 集合类型总结,ArrayList,Hastable,List<> 泛型,Dictionary<A, B> 字典集合
C# 集合类型总结 文章目录 C# 集合类型总结 前言 1. ArrayList 列表集合 1.1 ArrayList集合方法(增删查改) 1.2 遍历ArrayList列表 2. Hastable ...
- java 集合反射_关于granite源码包CollectionUtil集合工具类获取集合反射类型、实例化各种集合类型HashSet/ArrayList等...
一.前言 基于granite源码包org.granite.util.CollectionUtil集合工具类,分别获取集合反射类型java.lang.reflect.Type.实例化newCollect ...
- c语言可变入参中的每个参数的类型可以不同,编程入门:浅谈C语言的可变参数
C语言中有些函数使用可变参数,比如常见的int printf( const char* format, ...),第一个参数format是固定的,其余的参数的个数和类型都不固定. C语言用va_sta ...
- C语言布尔类型占几个字节,浅谈C语言中的布尔(bool)类型
我们知道在C++里有专门的bool类型,用来表示真或假.但是在C语言里没有这样的类型(至少我是一直这么认为的),表达式的值0为假,非0为真.所以条件判断语句( if(-).while(-) )非常灵活 ...
- 浅谈Linux PCI设备驱动(二)
我们在浅谈Linux PCI设备驱动(一)中(以下简称浅谈(一) )介绍了PCI的配置寄存器组,而Linux PCI初始化就是使用了这些寄存器来进行的.后面我们会举个例子来说明Linux PCI设备驱 ...
- php wrappers,浅谈PHP源码六:关于stream_get_wrappers函数
这篇文章主要介绍了关于浅谈PHP源码六:关于stream_get_wrappers函数,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 stream_get_wrappers (PHP ...
- arraylist 后往前遍历_Java集合框架之ArrayList
ArrayList介绍 ArrayList是一个数组列表.与Java数组相比,ArrayList相当于一个动态数组.它继承于AbstractList,实现了List, RandomAccess, Cl ...
- 浅谈Java锁,与JUC的常用类,集合安全类,常用辅助类,读写锁,阻塞队列,线程池,ForkJoin,volatile,单例模式不安全,CAS,各种锁
浅谈JUC的常用类 JUC就是java.util.concurrent-包下的类 回顾多线程 Java默认有几个线程? 2 个 mian.GC Java 真的可以开启线程吗? 开不了,点击源码得知:本 ...
- C# 数组增加元素_C#的集合类型及使用技巧
在日常开发过程中,我们不能避免的要对批量数据处理,这时候就要用到集合.集合总体上分为线性集合和非线性集合.线性集合是指元素具有唯一的前驱和后驱的数据结构类型:非线性集合是指有多个前驱和后驱的数据结构类 ...
最新文章
- C# 线程、任务和同步
- formdata上传文件_大文件分片断点上传实现思路以及方案
- SpringBoot跨域问题解决方案
- 怎么查MATLAB中的newrbf,已经有了输入输出数据,如何在matlab中建立RBF神经网络
- 拆包--缓冲区查找包头及包尾偏移
- 如何正确的开始用 Go 编程
- linux read phy reg,请问如后配置嵌入式网卡LAN91C11X系列的自动协商模式(Auto-Negotiation)?...
- Deep Learning for Joint Channel Estimation and Feedback in Massive MIMO Systems
- 【预测模型】基于BP神经网络实短时交通流预测matlab代码
- JS中的迭代器和生成器
- Linq两种左连接查询方法
- Eureka报错“EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ”
- python中获取网页元素
- php强类型作用,强类型php性能很彪悍
- 引入jq库,却不起效,底线解决方法
- 逆向工程实验——pre6(汇编、Android逆向、RSA算法破解)
- brew 一直等待_壹配资网门户技术解盘20201104:尿素遇阻回落 铜等待突破-股票外汇期货配资门户...
- 计算机网络基础之传输介质
- Web前端开发工程师--面试要求
- thinkpad X1catbon2019款装系统时无法U盘启动解决办法
热门文章
- 根据图片地址得到文件流
- 分布式自增ID算法---雪花算法(SnowFlake)Java实现
- 使用ETag识别ajax,如何使用jQuery AJAX请求访问ETag头?
- 数据库:MySQL高频面试题,大厂必备!
- 后端技术:Java 泛型 T,E,K,V的含义,看完本文你就明白了?
- Linux有关Shell算数运算的用法补充笔记
- 网站 HTTP 升级 HTTPS 完全配置手册
- 防止SQL注入式攻击的笔记
- vue路由跳转子组件_vue-router之路由钩子(组件内路由钩子必须在路由组件调用,子组件没用)...
- linux切换任务命令,Linux top详解之交互命令、命令行选项