关于List源码的分析

List是c#中的一个最常见的可伸缩数组组件,不用手动去分配数组大小
初始容量是0
优点:使用索引方式提取数组很快,通用性高
缺点:扩容时会很糟糕,每次针对数组进行new操作都会造成内存垃圾,给gc带来巨大负担。效率不高
常用接口分析
(1)Add接口
给定对象添加到列表的末尾,列表的大小+1
容量不够,将会增加到当前容量的两倍
4,8,16,32,64,128
溢出(大约2gb)之前,会允许列表增长到最大容量
(2)Remove接口
删除给定索引处的元素,列表大小减1
返回此列表范围内给定值首次出现的索引,该列表从头向尾向前搜索
用Array.IndexOf执行搜索
使用Object.Equals方法将列表中的元素与给定值进行比较
删除原理是使用Array.Copy对数组进行覆盖
O(n)
(3)Insert接口
给定索引处将元素插入此列表,列表大小增加1
如果需要,在插入新元素之前,列表的容量会增加一倍
使用Array.Copy进行复制数组,将数组里指定元素后面的所有元素向后移动一个位置
(4)[]接口(public T this[int index])
这里是直接使用数组的索引方式获取元素
(5)Clear接口
调用时并不会删除数组,而只是将数组中的元素设置为0或者null,而且size也设置成0.
ÿ

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值