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。
C#集合类型——Array、ArrayList、List 之浅谈的更多相关文章
- C#集合类型——Hashtable、Dictionary之浅谈
Hashtable表 数组.数组集合.List集合都是通过索引来访问里面成员.哈希表则是通过键来访问成员值.键不可为空,值可为空. 比如: Hashtable hash=new Hashtable ...
- C# 中的集合(Array/ArrayList/List<T>/HashTable/Dictionary)
int [] numbers = new int[5]; // 长度为5,元素类型为 int.string[,] names = new string[5,4]; // 5*4 的二维数组byte[] ...
- 【Java集合的详细研究2】浅谈Arrays.asList的使用
首先,该方法是将数组转化为list.有以下几点需要注意: (1)该方法不适用于基本数据类型(byte,short,int,long,float,double,boolean) (2)该方法将数组与列表 ...
- Swift的基础,操作符,字符串和集合类型
这篇文章主要讲解苹果Swift官方指南的第二章前四节的要点内容,如果想看完整的英文文档可以去苹果开发者页面下载. Basic 声明常量let 声明变量var 注释依旧使用"//" ...
- 浅谈boost.variant的几种访问方式
前言 variant类型在C++14并没有加入,在cppreference网站上可以看到该类型将会在C++17加入,若想在不支持C++17的编译器上使用variant类型,我们可以通过boost的va ...
- 【VS开发】【DSP开发】浅谈Linux PCI设备驱动(二)
我们在 浅谈Linux PCI设备驱动(一)中(以下简称 浅谈(一) )介绍了PCI的配置寄存器组,而Linux PCI初始化就是使用了这些寄存器来进行的.后面我们会举个例子来说明Linux PCI设 ...
- 浅谈Swift集合类型
Swift 的集合表现形式由数组和字典组成.它可以完美的存储任何呢想存储的东西. 数组是一个同类型的序列化列表集合,它用来存储相同类型的不同值.字典也是一个数组,但它的存值方式类似于Map,通过一对一 ...
- 转:C#常用的集合类型(ArrayList类、Stack类、Queue类、Hashtable类、Sort)
C#常用的集合类型(ArrayList类.Stack类.Queue类.Hashtable类.Sort) .ArrayList类 ArrayList类主要用于对一个数组中的元素进行各种处理.在Array ...
- java集合类型源码解析之ArrayList
前言 作为一个老码农,不仅要谈架构.谈并发,也不能忘记最基础的语言和数据结构,因此特开辟这个系列的文章,争取每个月写1~2篇关于java基础知识的文章,以温故而知新. 如无特别之处,这个系列文章所使用 ...
随机推荐
- TensorFlow v2.0实现Word2Vec算法
使用TensorFlow v2.0实现Word2Vec算法计算单词的向量表示,这个例子是使用一小部分维基百科文章来训练的. 更多信息请查看论文: Mikolov, Tomas et al. " ...
- PHP7内核(三):源码目录结构
上篇文章我们已经介绍了源码分析工具的安装.配置以及调试方法,本文我们来讲述一下PHP源码的目录结构. 一.目录概览 以php-7.0.12为例,看过源码的同学们应该发现源码目录多达十多个,下面是每个目 ...
- AC自动机(初步学习)
一开始讲AC自动机就是在字典树上做一个KMP,吓得我感觉好难,不过了解了以后,感觉也就是有点难度,不吓人. 它只是在字典树上用了KMP的思想 典型问题:给n个模式串和一个文本串,问有多少个模式串在文本 ...
- 【转载】卸载Anaconda教程
文章来源:https://docs.continuum.io/anaconda/install/uninstall/ 卸载Anaconda 要卸载Anaconda,您可以简单地删除该程序.这将留下一些 ...
- 微信阻止ios下拉回弹,橡皮筋效果
直接阻止touchmove事件就好了(需设置passive: false): document.addEventListener("touchmove", function(evt ...
- Jmeter 中 Bean Shell 之全局变量
1.新建测试计划>线程组 > http 请求 -登录 获取token , 可以参照我以前写的这篇博客 https://www.cnblogs.com/cyit/p/12632445.htm ...
- Linux环境下部署项目时的步骤和一些要注意的点
SQL的导出和导入 sql的导出 首先选中要导出的数据库 然后点击左下角的administration选项,进入导出界面. 点击Data Export 然后勾选图中的几个选项即可导出一个sql,如果需 ...
- [HDU1029]Ignatius and the Princess IV<桶 水题>
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1029 题目大意: 多组数据,每组数据先给一个n,然后给n各数字,找出n各数字中出现了至少(n+1)/2 ...
- MATLAB 句柄绘图
一.线句柄实例 >> h1=line([0:10],[0:10])%创建句柄值 h1 = Line (具有属性): Color: [0 0.4470 0.7410] LineStyle: ...
- HDU 2147kiki's game(巴什博弈变形)
题目链接 思路如下 P : 必胜点,那个人先走到 含P的点,那个这个人一定会输, N:必败点,谁走到这个点谁输! 在这一个题中: 某个点是P还是 N,之与 ⬅️左边第一个点.⬇️下边第一个点.↙️左下 ...