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

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. [vijos1880]选课<树形dp>

    题目链接:https://www.vijos.org/p/1180 这是一道树形dp的裸题,唯一的有意思的地方就是用到了多叉树转二叉树 然后本蒟蒻写这一道水题就是因为以前知道这个知识点但是没有怎么去实 ...

  2. 第一个AWK程序的尝试

    为了统计API的访问,需要读取8个G的数据,所以学习了下文本处理神器,AWK.简单实例如下: # 以\t分割的文本 awk -F "\t" ' //获取小时的函数 function ...

  3. 10年阿里自动化测试架构师帮您收集的:git常用命令大全以及git原理图【泣血推荐,建议收藏】

    一.Git分布式版本控制简介 ​ Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势.本来想着只把最有用.最常用的 Git 命令记下来, ...

  4. 艾编程coding老师课堂笔记:java设计模式与并发编程笔记

    设计模式概念 1.1 什么是设计模式 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路.它不是语法规定,而是一套用来提高代码可复用性.可维护性.可读性. ...

  5. WEB缓存系统之varnish代理以及健康状态检测配置

    前文我们聊了下varnish的缓存项修剪配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12666406.html:今天我来说一下varnish作为代理服务 ...

  6. jQuery和Vue的技术优劣对比

    1.精力集中. Jq偏重于对dom的操作,由它的函数就很容易看出来,$().parent().find().我们用jq的时候经常要去考虑怎么去渲染数据,怎么从视图中取到数据,操作数据前必须对dom节点 ...

  7. jenkins 脱机下 安装插件失败

    1.首次进入,提示离线 2.网上给出了绝大部分答案是进入Manage Plugins 中在高级下将升级站点的https换成http,但是都没解决我的问题  还是报错,用了大部分时间查阅 最终才发现问题 ...

  8. echarts整理

    保存一些常用的echarts图表及制作方法

  9. 1053 Path of Equal Weight (30分)(并查集)

    Given a non-empty tree with root R, and with weight W​i​​ assigned to each tree node T​i​​. The weig ...

  10. python编程笔记整理(2)

    1.向字典中添加元素     字典名[键名] = 键值     my["姓名"] = "许嘉祺" (使用此代码可以把键值对添加到名为name的字典里.) (由于 ...