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

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. 第二次实验报告:使用 Packet Tracer 分析应用层协议

    个人信息: 姓名:倪晓东 班级:计算1811 学号:201821121020 1 实验目的 熟练使用Packet Tracer工具.分析抓到的应用层协议数据包,深入理解应用层协议,包括语法.语义.时序 ...

  2. spring bean的装载过程简略赏析

    spring一个bean的容器,它从这个最基本的功能进而扩展出AOP,transaction,cache,schedule,data等等,将业务与框架代码解耦,让我们可以将大部分精力投入到业务代码中, ...

  3. mongodb的增加和删除

    一  mongodb中使用insert()方法来增加集合中的文档: db.myTable.insert({name:'arvin',age:12}) //对名为myTable的集合插入数据 插入数据 ...

  4. 什么情况下JVM内存中的一个对象会被垃圾回收?

    新生代满了会触发 Young GC,老年代满了会触发 Old GC.GC时会回收对象,那么具体是什么样的对象会被垃圾回收器回收呢? 可达性分析算法,判断是否被 GC Roots 引用 判断引用类型:强 ...

  5. Python学习-第三节part1: 关于函数

    一 为何要用函数之不用函数的问题 #1.代码的组织结构不清晰,可读性差 #2.遇到重复的功能只能重复编写实现代码,代码冗余 #3.功能需要扩展时,需要找出所有实现该功能的地方修改之,无法统一管理且维护 ...

  6. C/C++知识总结 一 C/C++常识概述

    C/C++常识概述 程序与计算机语言 C/C++简介与发展 C/C++异同 C/C++编译特点 学习编程建议 程序与计算机语言 程序:是一组计算机能识别和执行.预先编好的一些指令操作合集. 计算机语言 ...

  7. javascript原生 实现数字字母混合验证码

    实现4位数 数字字母混合验证码(数字+大写字母+小写字母) ASCII 字符集中得到3个范围: 1. 48-57 表示数字0-9 2. 65-90 表示大写字母 3. 97-122 表示小写字母 范围 ...

  8. 001_manifest.json手册

    manifest.json 是一个 JSON 格式的文件,是每个 WebExtension必须包含的唯一文件. 使用manifest.json,您可以指定扩展名的基本元数据,如名称和版本,还可以指定扩 ...

  9. Jenkins Pipeline 持续集成

    Jenkins Pipeline 持续集成 Pipeline Script 执行流程 在使用Pipeline之前请确保Jenkins是2.x版本以上,并且安装了Pipeline插件. Jenkins提 ...

  10. postman 工具接口测试

    一.get:请求多个参数时,需要用&连接 eg:http://api.***.cn/api/user/stu_info?stu_name=小黑&set=女   eg:接口请求参数放在b ...