不确定能写多少,能写多少写多少,也是基本常用到的一些,像BinarySerach
这些就没写出来,如果有这方面的书籍,麻烦留言告诉我一下,我自己找不到……谢谢
文章目录
- 基本数据
- 构造函数
- 字段:
- 函数
- Add(T item)
- AddRange(IEnumberable< T > collection)
- InsertRange(int index, IEnumerable< T > collection)
- Clear()
- Contains(T item)
- CopyTo(*****)
- FindIndex(int startIndex, int count, Predicate< T > match)
- FindIndex(int startIndex, Predicate< T > match)
- FindIndex(Predicate< T > match)
- Exists(Predicate< T > match)
- Find(Predicate< T > match)
- FindAll(Predicate< T > match)
- FindLast(Predicate< T > match)
- ForEach(Action< T > action)
- GetRange(int index, int count)
- Insert(int index, T item)
- Remove(T item)
- RemoveAt(int index)
- RemoveRange(int index, int count)
- ToArray()
- Sort()
基本数据
继承了 X 个接口,给自己挖坑,接口留着以后说
可以看到,默认初始容量为 4 ,使用 数组T[] 存储相应的数据
构造函数
默认构造函数,直接返回一个静态、只读、长度为0 的数组
带 容量 (Capacity ) 的构造函数,容量 Capacity 非负
带 集合 IEnumerable<T> collection 的参数,collection 不能为null
最后一行为空时,仍执行Add,若为引用类型,是可以将null添加到末尾的
字段:
Capacity
get
直接返回items.length
,即数组长度
set
当容量<已存数据长度,发生异常,原因是重新设置容量时,如果列表已存在数据,将发生数组的复制。所以设置容量>数据长度时,申请新的数组,将原有数组复制过去
Count
返回字段
_size
[index]
返回、设置数组
this._items[index]
的值,当set
时,版本_version
增一
函数
Add(T item)
确保空间够,不够基本以原有的 2 倍扩展
添加到末端,版本增一
AddRange(IEnumberable< T > collection)
调用
InsertRange(this._size, collection)
InsertRange(int index, IEnumerable< T > collection)
做安全性校验后,先把要插入的位置后的数据复制到后
collection.Count
的位置,再开辟新数组存储要插入的数据,再将数据插入到指定位置
Clear()
每一个数值置默认值,_size 为 0
Contains(T item)
遍历一遍,时间复杂度O(n)
CopyTo(*****)
直接使用Array.Copy(*****)
FindIndex(int startIndex, int count, Predicate< T > match)
最基本的FindIndex,供其他
Find
Exists
FindIndex
调用
作一遍遍历,使用 match 函数作匹配,时间复杂度O(n)
FindIndex(int startIndex, Predicate< T > match)
FindIndex(Predicate< T > match)
Exists(Predicate< T > match)
Find(Predicate< T > match)
FindAll(Predicate< T > match)
时间O(n),申请List默认空间为4,使用默认空间可能发生频繁的数组复制操作
FindLast(Predicate< T > match)
逆序遍历,时间复杂度O(n)
ForEach(Action< T > action)
为每一个数据执行
action
操作
GetRange(int index, int count)
申请空间为 count 的列表
Insert(int index, T item)
直接插入,数组后
this._size - index
位后移一位
Remove(T item)
先查找
Item
的下标,然后通过下标移除
RemoveAt(int index)
RemoveRange(int index, int count)
ToArray()
申请新的数组空间,赋值返回
Sort()
Sort 排序,该结构自身不作实现
通过调用Array
中的静态排序方法,而Array
调用ArraySortHelper
中的排序
_V4_5 表示框架的版本
该排序综合了多个排序,包括堆排序、快排等等