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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS Linux 系统命令之rmdir命令

在Linux中目录创建是使用mkdir&#xff0c;那有创建目录的命令自然有删除目录的命令&#xff0c;删除目录的命令是rmdir。命令格式&#xff1a;rmdir [选项] 目录参数选项&#xff1a;-p 可以递归删除&#xff0c;但是不能删除非空目录-v 显示删除过程命令实例&#xff1a;1&am…

ArcGIS实验教程——实验十三:栅格空间插值分析

ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据) >>> 实验前必读:《完美解决ArcGIS10.x栅格空间插值报错无法进行和导出插值栅格结果出错的问题》 一、实验描述 一般情况下采集到的数据都是以离散点的形式存在的,只有在这些采样点上才有…

Java之Callable和Runnable

1 接口定义 1) Callable接口 public interface Callable<V> {V call() throws Exception; } 2) Runnable接口 public interface Runnable {public abstract void run(); } 2 不同点和相同点 1&#xff09;相同点 都是接口&#xff0c;都可编写多线程程序&#xff…

ARM路线的投机性和欺骗性

过去十年里&#xff0c;在自主CPU取得了长足进步的同时&#xff0c;一批企业积极引进英特尔、AMD、VIA、IBM、ARM、高通等公司的技术&#xff0c;或是成立合资公司&#xff0c;相对于X86、Power等处理器很容易被识别为技术引进CPU&#xff0c;ARM的欺骗性则要强很多&#xff0c…

营业执照在线一键生成_如何在线制作证件照?证件照一键生成的方法

如何在线制作证件照&#xff1f;每一年的毕业季也是就业季&#xff0c;几百多万的大学生都面临着找工作&#xff0c;而在工作之前必须准备好证件照&#xff0c;这样方便参加面试和入职。随着市场需求的逐步扩大&#xff0c;很多便捷的软件和网站都被设计出来了&#xff0c;比如…

php基础教程 第十一步 面向对象

面相对象 面向对象程序设计简称OOP&#xff08;Object-oriented programming&#xff09;。是一种类型的抽象&#xff0c;或者说是一种类型以编码的方式进行描述。概念上理解并不能直观的说明问题&#xff0c;以下将会有示例为读者直观的感受面向对象。 类代表一个类别&#…

Hype3使用体验

优点 上手简单&#xff0c;会操作常规软件操作的话一天之前可以掌握基本功能&#xff1b;屏幕适配方便&#xff0c;通过布局&#xff08;或者成为断点&#xff09;来适配不同屏幕分辨率&#xff1b;动画通过时间线方式来设定&#xff0c;并且多一行属性配置&#xff0c;而且可以…

ArcGIS实验教程——实验十四:空间数据库的建立

ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据) 一、实验描述 1、GeoDataBase描述 地理数据库(空间数据库)GeoDataBase是一种面向对象的数据模型,它对于地理特征的表达更接近于我们对现实世界的认识。 它建立在标准的关系数据库(RDBMS)基础…

Android NDK开发Crash错误定位[转]

使用 ndk-stack 的时候需要你的 lib 编译为 debug版的&#xff0c;通常需要下面的修改&#xff1a; 1. 修改 android.mk&#xff0c;增加&#xff0c;为 LOCAL_CFLAGS 增加 -g 选项 2. 修改 application.mk&#xff0c;增加 APP_OPTIM : debug 3. nkd-build -B 4. 从 obj/local…

Java之多线程里面的锁理解以及synchronized与Lock的区别

一、宏观的说下锁的分类 1&#xff09;锁分为乐观锁、悲观锁 悲观锁认为对于同一个数据的并发操作&#xff0c;一定是会发生修改的&#xff0c;哪怕没有修改&#xff0c;也会认为修改。因此对于同一个数据的并发操作&#xff0c;悲观锁采取加锁的形式。悲观的认为&#xff0c…

实验报告类与对象水井问题_物业设施设备巡检检查对象、周期和频次

点击上方“物业精英俱乐部”&#xff0c;关注公众号,中国物业管理行业精英联盟&#xff0c;中国百强物业企业精英学习平台。来源&#xff1a;百度文库版权归原创作者所有一巡检对象、周期和频次所谓巡检&#xff0c;并不是说将大大小小的所有物业设施都列入巡检范围&#xff0c…

龙芯2K1000LA处理器流片成功,龙芯业务全面转向LoongArch架构

2022年4月底&#xff0c;龙芯2K1000处理器完成了改版芯片&#xff08;代号龙芯2K1000LA&#xff09;的功能和性能测试&#xff0c;正在开展用户试用。龙芯2K1000LA在实现与原有版本2K1000引脚和接口兼容的基础上&#xff0c;处理器核更新为基于龙芯自主指令系统架构LoongArch&a…

php基础教程 第十一步 面向对象补充

继承 上一节中学习了php类&#xff0c;以及类方法、类成员变量相关的一些知识&#xff0c;接下来开始学习php类中的继承。本节是上一节的补充。&#xff08;其实也就是为了保持日更随便发的一篇文&#xff09; 开始 php继承是继承与父类的所有属性&#xff0c;就像你继承了你…

ArcGIS实验教程——实验十五:拓扑关系创建与编辑

ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据) 一、实验描述 1、拓扑关系的概念 拓扑关系是指满足拓扑几何学原理的各空间数据间的相互关系。即用结点、弧段和多边形所表示的实体之间的邻接、关联、包含和连通关系。如:点与点的邻接关系、点与面…

Sql Server 优化 SQL 查询:如何写出高性能SQL语句

1、 首先要搞明白什么叫执行计划&#xff1f; 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案&#xff0c;这个方案是由查询优化器自动分析产生的&#xff0c;比如一条SQL语句如果用来从一个 10万条记录的表中查1条记录&#xff0c;那查询优化器会选择“索引…

【Ubuntu】ubuntu物理机安装方法:wubi

在之前的文章里我们曾经详细介绍了如何在虚拟机里安装ubuntu操作系统&#xff0c;但是一些小伙伴希望在自己的电脑里安装一个ubuntu&#xff0c;来感受一下ubuntu的硬体验。下面给大家介绍一种通过wubi的安装方法。 wubi是 Windows Ubuntu-Based Installer 缩写&#xff0c;是一…

Java之ThreadLocal

1 ThreadLocal接口出现原因 使用ThreadLocal保存当前线程的变量值&#xff0c;这样你想获取该变量的值的时候&#xff0c;获取到的都是本线程的变量值&#xff0c;不会获取到其他线程设置的值&#xff0c;早在JDK 1.2的版本中就提供java.lang.ThreadLocal&#xff0c;ThreadLo…

server如何调用 thrift_Thrift总结(二)如何快速创建自己的RPC服务

前面介绍了thrift 基础的东西&#xff0c;怎么写thrift 语法规范编写脚本&#xff0c;如何生成相关的语言的接口。不清楚的可以看这个《Thrift总结(一)介绍》。做好之前的准备工作以后&#xff0c;下面就开始如何用Thrift写RPC接口。如何用Thrift写RPC接口1. 打开之前下载的thr…

Hello Playwright:(2)简化部署方式

前言上次的文章Hello Playwright&#xff1a;(1)从开发到部署发表后&#xff0c;有网友留言问&#xff0c;有不有简化部署的方式&#xff1a;下面&#xff0c;提供 2 种可行的方案。方案 1. Copy其实 Playwright 默认是到C:\Users\用户名\AppData\Local\ms-playwright文件夹下查…

ArcGIS实验教程——实验十六:空间数据查询

ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据) 一、实验描述 空间数据库查询定义:从空间数据库中找出所有满足属性约束条件和空间约束条件的地理对象。 二、实验内容 (一)属性查询 1、简单查询 2、SQL查询 (二)图形查询 1、点查询 2…