标签:大于等于 for循环 方法调用 使用数组 数据 height eal 属性 方法
上图展示了LIst的继承和实现关系。
List构造函数一共有3个,
1、无参构造,创建的集合是一个空数组。
2、带集合大小的构造,如果传入的是有效的集合大小,则创建对应大小的数组。
3、实现了IEnumerable类型的构造,将传入的数据copy到新的数组中去。
PS:List底层的实现是通过Array数组来实现的(private T[] _items)。
Count:这个属性最常用,指的是当前集合中元素的数量。
Capacity:这个属性代表了当前集合所使用数组的容量,上面也提示过了,List的底层是数组,数组在声明的时候是需要有一个固定长度的,Capacity指的就是数组的长度,Capacity的值一定是大于等于Count。
Add和Insert类方法
往集合中添加数据,最终是往数组_items中增加数据
下图展示的是Add方法的源码,从源码中可以看到
刚初始化的空集合第一次添加数据时,默认设置数组的长度_defaultCapacity为4,当给集合添加第5个元素时,底层实现数组则是创建一个新数组,新数组的长度是当前数组的2倍,然后将当前数组的数据拷贝到新数组中,最后将第5个新元素加入数组中;
Find类方法
从源码中可以看到Find方法的根子是使用for循环来实现的,传入的是lambda表达式进行对比。
Indexof类方法
indexof类方法调用的是Array数组的indexof方法,最终使用for循环进行查找下标。
Remove方法
remove方法实现是使用数组的copy来实现的,比如当前集合5个元素,要移除第3个元素,实际结果是将数组的第4个元素到最后一个元素拷贝然后粘贴替换到数组的从第3个元素开始,这样就把第三个元素给替换掉了,然后再把数组的最后一个元素给置为默认。
RemoveAll方法
removeAll方法实现如下图所示,是先将所有符合移除条件的元素通过前后位置交换的方式,全部替换到数组的尾部,这样需要移除的元素都是在一起并且是在数组的尾部,然后再通过Array的clear方法,将尾部的元素全部移除。
标签:大于等于 for循环 方法调用 使用数组 数据 height eal 属性 方法
原文地址:https://www.cnblogs.com/zfg-565343033/p/14939606.html