数组的制约:局限性。有多少放多少,要想追加,就必须重新再定义一个数组,这就造成了资源的极大浪费而且性能消耗也比较大。因此此操作不太推荐。所以集合就来了。

int[] arr=new[]{,,,}

创建集合:

ArrayList list=new ArrayList();
list.Add();
list.Add();
list.Add();
Console.WriteLine(list.Count);//输出元素个数 3

在原有基础上在追加一个:实现动态添加数据,而避免再次开辟一个资源空间。

ArrayList list=new ArrayList();
list.Add();
list.Add();
list.Add();
Console.WriteLine(list.Count);//输出元素个数 3
list.Add();
Console.WriteLine(list.Count);//输出元素个数 4

集合特点:

特点1.可以伸缩。

取值:和数组一样通过下标

Console.WriteLine(list[]); //输出12
Console.WriteLine(list[]); //输出22
for(var i=;i<list.Length;i++)
{
Console.WriteLine(list[i]); //输出所有元素
}

当然,也可以把object类型放入list中,但是此操作在取值时需要进行拆箱操作,无法直接操作里面的元素,例:

特点2:类型未知

list.Add();
list.Add(12.2);

list.Add("abcd"); foreach(var item in list)
{ Console.WriteLine((int)list[i]); //拆箱操作(解析double和string类型报错)
}

List:1.极力推荐泛型集合,数组的数据类型一致性,集合的可伸缩性

List<int> list=new List<int> //只能存放 int
list.Add();
list.Add();
list.Add();
list.Add();
list.Add();
Console.WriteLine(list.Count); //输出5
foreach(var item in list)
{
//此时不需要进行拆箱操作,因为只有int类型,节省了性能的消耗
Console.WriteLine(list[item])
}
List<string> list=new List<string> //只能存放 string

删除元素本身:Remove,如果要删除的数据类型是数组或者对象,不可以直接删除,须先找到

list.Remove();
list.Remove();
Console.WriteLine(item); //输出 2 3 6

例如:

找到要删除的数据:

根据下标删除:RemoveAt(),特别注意,根据下标进行删除,原有的下标会发生改变

例如:

list.RemoveAt(); //删除下标为0,删除成功,下一个元素的下标将会发生改变
list.RemoveAt();
list.RemoveAt();
list.RemoveAt(0);
list.RemoveAt(0);
console.writeLine(list.Count); //元素全部删除

一旦删除的个数大于集合本身元素个数,就会报索引值超出范围的问题。

list.clear(); //清空所有元素

list.insert();插入值参数1:插入位置的下标,参数2:对应的值

例如:

list.insert(,);

元素排序、降序操作

foreach(var item in list.Order(m=>m))
{
console.WriteLine(list); //升序操作
}; foreach(var item in list.OrderDescending(m=>m))
{
console.WriteLine(list); //降序操作
};
console.WriteLine(list.sum()); //元素总和
console.WriteLine(list.Average()); //元素平均数
console.WriteLine(list.max()); //元素最大值
console.WriteLine(list.min()); //元素最小值
console.WriteLine(list.Count(m=>m%==));//元素中偶数的个数

C#集合ArrayList、泛型集合List(3)的更多相关文章

  1. C#非泛型集合和泛型集合的超级详解

    C# 泛型集合之非泛型集合类与泛型集合类的对应: ArrayList对应List HashTable对应Dictionary Queue对应Queue Stack对应Stack SortedList对 ...

  2. C#集合与泛型集合

    看到这个标题,大家应该就知道有泛型集合,就有非泛型集合 既然都是集合,咱们今儿就简单的来对比讲解下 需要记住的不算太多,理解记忆.理解记忆 2017-11-0411:39:09 C# 泛型集合之非泛型 ...

  3. C#非泛型集合和泛型集合

    第一  : ArrayList(非泛型集合)  与List(泛型集合) ArrayList 是数组的复杂版本.ArrayList 类提供在大多数 Collections 类中提供但不在 Array(数 ...

  4. C#;DataTable添加列;DataTable转List泛型集合;List泛型集合转DataTable泛型集合;

    给DataTable添加列 string sql = "select * from cgpmb order by code"; DataTable dt = Bobole.Data ...

  5. C#中数组、集合(ArrayList)、泛型集合List<T>、字典(dictionary<TKey,TValue>)全面对比

    C#中数组.集合(ArrayList).泛型集合List<T>.字典(dictionary<TKey,TValue>)全面对比 为什么把这4个东西放在一起来说,因为c#中的这4 ...

  6. C#中存储数据的集合:数组、集合、泛型、字典

    为什么把这4个东西放在一起来说,因为c#中的这4个对象都是用来存储数据的集合……. 首先咱们把这4个对象都声明并实例化一下: //数组 ]; //集合 ArrayList m_AList = new ...

  7. 编写高质量代码改善C#程序的157个建议——建议20:使用泛型集合代替非泛型集合

    建议20:使用泛型集合代替非泛型集合 在建议1中我们知道,如果要让代码高效运行,应该尽量避免装箱和拆箱,以及尽量减少转型.很遗憾,在微软提供给我们的第一代集合类型中没有做到这一点,下面我们看Array ...

  8. ConvertHelper与泛型集合

    在机房重构时.我们常常会用到ConvertHelper. 它把从数据库中查询到的dateTable(也是一个暂时表)转化为泛型,然后再填充到DataGridView控件中. ConvertHelper ...

  9. ArrayList/List 泛型集合

    List泛型集合 集合是OOP中的一个重要概念,C#中对集合的全面支持更是该语言的精华之一. 为什么要用泛型集合? 在C# 2.0之前,主要可以通过两种方式实现集合: a.使用ArrayList 直接 ...

  10. C#重的数组、集合(ArrayList)、泛型集合(list<T>)三者比较及扩展延伸……

    本来我只想总结下数组.集合(ArrayList).泛型集合(list<T>)三者的比较的,可以一写下来要扩展的知识点有点多了,只能写一个小的知识点列表了如下: 1.数组.集合(ArrayL ...

随机推荐

  1. Pandas 精简实例入门

    目录 0. 案例引入 1. Pandas 主要数据结构 1.1 DataFrame 1.1.1 设置索引 1.1.2 重设索引 1.1.3 以某列为索引 1.2 MultiIndex 1.3 Seri ...

  2. POJ 1797 最短路变形所有路径最小边的最大值

    题意:卡车从路上经过,给出顶点 n , 边数 m,然后是a点到b点的权值w(a到b路段的承重),求卡车最重的重量是多少可以从上面经过. 思路:求所有路径中的最小的边的最大值.可以用迪杰斯特拉算法,只需 ...

  3. Hadoop 集群的基准测试

    集群搭建完毕之后,需要对集群进行基准测试 第一方面:基本测试 服务启动,是否可用,简单的应用 *hdfs 读写操作 bin/hdfs dfs -mkdir - p /user/chris/tmp/co ...

  4. Cygwin工具编译Ardupilot方法

    注意:该编译方法生成的固件基于Chibios系统,如果想要Nuttx系统固件,需采用make编译,步骤见make编译说明部分. 软件安装准备 安装Cygwin 打开链接www.cygwin.com/i ...

  5. MATLAB 一维随机变量及其概率分布

    1.两点分布 clc clear a=rand(1,10); for ii=1:10 if a(ii)<0.2 a(ii)=0; else a(ii)=1; end end a x=0的概率为0 ...

  6. 条件判断IF

    bash中条件判断使用if语句 千万注意分号 一.单分支条件判断 if  条件 :then 分支1: fi 二.双分支条件判断 if  条件:then 分支1: else 分支2: fi 三.多分支条 ...

  7. 当阿里面试官问我:Java创建线程有几种方式?我就知道问题没那么简单

    这是最新的大厂面试系列,还原真实场景,提炼出知识点分享给大家. 点赞再看,养成习惯~ 微信搜索[武哥聊编程],关注这个 Java 菜鸟. 昨天有个小伙伴去阿里面试实习生岗位,面试官问他了一个老生常谈的 ...

  8. pycharm文件名颜色代表的含义

    在使用pycharm过程中,文件名有不一样的颜色. 绿色:已经加入版本控制暂未提交 红色:未加入版本控制 蓝色:加入版本控制,已提交,有改动 白色:加入版本控制,已提交,无改动 灰色:版本控制已忽略文 ...

  9. python图片拼接

    python图片拼接 这两天看到一张图片,想用python来实现类似的图片拼接  先分析图片: 很明显,这张图片是由多张图片叠加拼接而成 从最后一张开始开始叠加,之后的每张图片都往上平移了一个固定的距 ...

  10. 躁!DJ 风格 Java 桌面音乐播放器

    本文适合有 Java 基础知识的人群,跟着本文可学习和运行 Java 版桌面 DJ 音乐播放器. 本文作者:HelloGitHub-秦人 HelloGitHub 推出的<讲解开源项目>系列 ...