C#集合ArrayList、泛型集合List(3)
数组的制约:局限性。有多少放多少,要想追加,就必须重新再定义一个数组,这就造成了资源的极大浪费而且性能消耗也比较大。因此此操作不太推荐。所以集合就来了。
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)的更多相关文章
- C#非泛型集合和泛型集合的超级详解
C# 泛型集合之非泛型集合类与泛型集合类的对应: ArrayList对应List HashTable对应Dictionary Queue对应Queue Stack对应Stack SortedList对 ...
- C#集合与泛型集合
看到这个标题,大家应该就知道有泛型集合,就有非泛型集合 既然都是集合,咱们今儿就简单的来对比讲解下 需要记住的不算太多,理解记忆.理解记忆 2017-11-0411:39:09 C# 泛型集合之非泛型 ...
- C#非泛型集合和泛型集合
第一 : ArrayList(非泛型集合) 与List(泛型集合) ArrayList 是数组的复杂版本.ArrayList 类提供在大多数 Collections 类中提供但不在 Array(数 ...
- C#;DataTable添加列;DataTable转List泛型集合;List泛型集合转DataTable泛型集合;
给DataTable添加列 string sql = "select * from cgpmb order by code"; DataTable dt = Bobole.Data ...
- C#中数组、集合(ArrayList)、泛型集合List<T>、字典(dictionary<TKey,TValue>)全面对比
C#中数组.集合(ArrayList).泛型集合List<T>.字典(dictionary<TKey,TValue>)全面对比 为什么把这4个东西放在一起来说,因为c#中的这4 ...
- C#中存储数据的集合:数组、集合、泛型、字典
为什么把这4个东西放在一起来说,因为c#中的这4个对象都是用来存储数据的集合……. 首先咱们把这4个对象都声明并实例化一下: //数组 ]; //集合 ArrayList m_AList = new ...
- 编写高质量代码改善C#程序的157个建议——建议20:使用泛型集合代替非泛型集合
建议20:使用泛型集合代替非泛型集合 在建议1中我们知道,如果要让代码高效运行,应该尽量避免装箱和拆箱,以及尽量减少转型.很遗憾,在微软提供给我们的第一代集合类型中没有做到这一点,下面我们看Array ...
- ConvertHelper与泛型集合
在机房重构时.我们常常会用到ConvertHelper. 它把从数据库中查询到的dateTable(也是一个暂时表)转化为泛型,然后再填充到DataGridView控件中. ConvertHelper ...
- ArrayList/List 泛型集合
List泛型集合 集合是OOP中的一个重要概念,C#中对集合的全面支持更是该语言的精华之一. 为什么要用泛型集合? 在C# 2.0之前,主要可以通过两种方式实现集合: a.使用ArrayList 直接 ...
- C#重的数组、集合(ArrayList)、泛型集合(list<T>)三者比较及扩展延伸……
本来我只想总结下数组.集合(ArrayList).泛型集合(list<T>)三者的比较的,可以一写下来要扩展的知识点有点多了,只能写一个小的知识点列表了如下: 1.数组.集合(ArrayL ...
随机推荐
- 我的Keras使用总结(4)——Application中五款预训练模型学习及其应用
本节主要学习Keras的应用模块 Application提供的带有预训练权重的模型,这些模型可以用来进行预测,特征提取和 finetune,上一篇文章我们使用了VGG16进行特征提取和微调,下面尝试一 ...
- iOS App的启动过程
一.mach-O Executable 可执行文件 Dylib 动态库 Bundle 无法被连接的动态库,只能通过 dlopen() 加载 Image 指的是 Executable,Dylib 或者 ...
- RecyclerView 的简单使用
自从 Android 5.0 之后,google 推出了一个 RecyclerView 控件,他是 support-v7 包中的新组件,是一个强大的滑动组件,与经典的 ListView 相比,同样拥有 ...
- POI2014 FAR-FarmCraft 树形DP+贪心
题目链接 https://www.luogu.org/problem/P3574 题意 翻译其实已经很明确了 分析 这题一眼就是贪心啊,但贪心的方法要思索一下,首先是考虑先走时间多的子树,但不太现实, ...
- Spring Boot 整合视图层技术,application全局配置文件
目录 Spring Boot 整合视图层技术 Spring Boot 整合jsp Spring Boot 整合freemarker Spring Boot 整合视图层技术 Spring Boot 整合 ...
- int不可为null引发的 MyBatis做持久层框架,返回值类型要为Integer问题
MyBatis做持久层框架,返回值类型要为Integer MyBatis 做持久层时,之前没注意,有时候为了偷懒使用了int类型做为返回的类型,这样是不可取的,MyBatis做持久层框架,返回值类型要 ...
- 三角函数在Three.js中的点的移动轨迹应用
在学习2D文字的时候,看到官网有这样一个示例: https://threejs.org/examples/#css2d_label 
未命名易错点 1.0<y<10 在c语言中,0<y<10不是一个正确的表达式,应该利用逻辑运算符替换(y>0&&y<10或者!(y<=0||y ...
- 基于 Hudi 和 Kylin 构建准实时高性能数据仓库
在近期的 Apache Kylin × Apache Hudi Meetup直播上,Apache Kylin PMC Chair 史少锋和 Kyligence 解决方案工程师刘永恒就 Hudi + K ...