个人面试题分享
- 最近拿起我破败不堪的iphone6 看到前几年面试的题目,看到当时自己的回答,真的觉得挺Low的,哈哈哈。我寻思着,既然面试官出这道题,是不是有原因呢?果不其然,我仔细研究了一下
在之前的开发中,我从来都是直接使用的,并没有传递capacity 参数,也就没有考虑到list集合的一个内存分配的问题,试想一个有100万元素的List的在构造和添加元素时内存是如何变化的呢?
当我们添加的元素小于或者等于capacity 的时候,那么是不会调整内部数据结构,list集合里面是不会变化的,
而当我们添加的元素数量大于Capacity 的值时,List就会不断的调整内部数据结构或者重新申请分配内存,这样的话对效率肯定会有一定的影响的。
当我们使用List list = new List(); 实际是在创建一块内存,而对他每次添加都是在改变它的数据结构,那么设想元素有100万个,那么就改变了list集合本身一百万次,这开销非常影响效率,因此在我们知道需要存储多少元素的时候可以直接给capacity 传递参数,避免多余的开销,保证程序的健壮性,才是咱们程序员的职业素养
以上就是我对list集合的一些新的理解,记录一下,当我们申请1000的内存的时候,如果实际的元素只有500,也可以调用list集合的
TrimExcess(),释放掉多余的内存,避免内存的浪费。还是非常的人道的!!!,哈哈
也多亏了这位博主,