標簽:大于等于 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