C# 高级编程个人笔记搬运 八(集合)

这篇博客聚焦于C#中的集合类,特别是List<T>。List<T>作为动态数组,允许灵活地添加元素。文章提到了集合类主要来自System.Collections.Generic、System.Collections.Concurrent和System.Collections.Immutable命名空间。内容涵盖列表的初始化、容量调整、元素操作如插入、访问、删除、搜索、排序以及类型转换。此外,还讨论了如何根据需求定制列表容量以避免内存浪费。
摘要由CSDN通过智能技术生成

我们之前介绍了数组和Array类实现的接口。数组的大小是固定的。如果元素格式是动态的,就应该使用集合类。List<T>是与数组相当的集合类。还有其它的集合类:队列、栈、链表、字典和集合。

这些集合一般来源于三个命名空间中:

①:普通可变集合类位于System.Collections.Generic中;

②:专用于特定类型的集合类位于System.Collections.Concurrent中;

③:不可变的集合类位于System.Collections.Immutable中。

列表

.NET Framewoke为动态列表提供了泛型类List<T>。在泛型List<T>中,必须为声明为列表的值指定类型。而ArrayList是一个非泛型列表,它可以将任意Object类型作为其元素。

使用默认的构造函数可以创建一个空列表,元素添加到列表后,列表的容量就会扩大为可接纳4个元素。如果添加了第5个元素,列表的大小就会被重新设置为8个元素,接下来是16个元素。也就是每一次的扩容是前一次的2倍。如果列表的容量改变了整个集合就会被重新分配到一块新的内存中。Array.Copy()方法将旧数组中的元素复制到新的数组中

如果我们一开始就知道元素的个数了,那么我们可以自定义列表的容量

List<int> intList = new List<int>(10);

// 还可以随时扩容,重新制定列表的容量大小
intList.Capacity =20;

当列表的容量大于实际需要的时候,我们会浪费内存,这个时候我们可以去除不必要的容量

// 当元素个数不超过容量的90%时,可以用下面方法去除容量:
intList.TrimExcess();  // 如果元素已经占了90%以上,那么这个方法将失效!

我们使用列表的一些方法:

①、使用默认的构造函数可以创建一个空列表

List<int> intList = new List<int>();
linList.Add(11);
linList.Add(21);

②、集合初始值设定项

var intList = new List<int>(){11,21};

③、使用List<T>类的AddRange()方法,可以一次给集合添加多个元素。例如:

类对象.AddRagne(new 对应类[]{ new 对应类(2019,“年份”),new 对应类(2020,"日期")});

④、插入元素,使用Insert()方法可以在指定位置插入元素:

// 在位置1插入元素31
intList.Insert(1,31)

// 也可以批量插入,使用InsertRange()
类对象.InsertRange((2,new 对应类(2019,“年份”)),(4new 对应类(2020,"日期"))});

⑤、访问元素,索引是从0开始的

// 获取列表第4个元素的值
var r1 = intList[3];

⑥、删除元素用RemoveAt(),它的原理是利用了IndexOf()的方法找到索引位置

// 删除第5个元素
intList.RemoveAt(4);

// 也可以批量删除元素,指定索引位置,删除后面的几位
intList.RemoveRange(2,3);

⑦、搜索

⑧、排序

⑨、类型转换

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值