List集合有构造函数和无构造函数的区别

5 篇文章 1 订阅

个人面试题分享

  1. 最近拿起我破败不堪的iphone6 看到前几年面试的题目,看到当时自己的回答,真的觉得挺Low的,哈哈哈。我寻思着,既然面试官出这道题,是不是有原因呢?果不其然,我仔细研究了一下

在这里插入图片描述在之前的开发中,我从来都是直接使用的,并没有传递capacity 参数,也就没有考虑到list集合的一个内存分配的问题,试想一个有100万元素的List的在构造和添加元素时内存是如何变化的呢?
当我们添加的元素小于或者等于capacity 的时候,那么是不会调整内部数据结构,list集合里面是不会变化的,
而当我们添加的元素数量大于Capacity 的值时,List就会不断的调整内部数据结构或者重新申请分配内存,这样的话对效率肯定会有一定的影响的。

在这里插入图片描述
当我们使用List list = new List(); 实际是在创建一块内存,而对他每次添加都是在改变它的数据结构,那么设想元素有100万个,那么就改变了list集合本身一百万次,这开销非常影响效率,因此在我们知道需要存储多少元素的时候可以直接给capacity 传递参数,避免多余的开销,保证程序的健壮性,才是咱们程序员的职业素养
以上就是我对list集合的一些新的理解,记录一下,当我们申请1000的内存的时候,如果实际的元素只有500,也可以调用list集合的
TrimExcess(),释放掉多余的内存,避免内存的浪费。还是非常的人道的!!!,哈哈

也多亏了这位博主,

C#中大List的内存分配

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值