数据结构 | Add | Delete | Find | GetByIndex |
Array | O(n) | O(n) | O(n) | O(1) |
ArrayList | O(1) | O(n) | O(n) | O(1) |
List<T> | O(1) | O(n) | O(n) | O(1) |
LinkedList<T> | O(1) | O(n) | O(n) | O(n) |
Stack | O(1) | O(1) | - | - |
Queue | O(1) | O(1) | - | - |
HashTable | O(1) | O(1) | O(1) | - |
Dictionary<K,T> | O(1) | O(1) | O(1) | - |
HashSet<T> | O(1) | O(1) | O(1) | - |
SortedSet<T> | O(Logn) | O(Logn) | O(Logn) | - |
Array 数组
数组是最简单的数据结构之一。其具有一下3个特点。
(1)数组存储在连续的内存上。
(2)数组的元素都是相同类型或者类型的衍生类型。因此数组又被认为是同质数据结构。
(3)数组可以直接通过下标访问。array[i]。
一个数组的常规操作主要两种:
(1)分配存储空间。声明一个新的数组:int[] arr = new int[5]。
(2)访问数组中的元素数据。int i = arr[0]。
创建一个新的数组时,将在Mono运行的托管堆中分配一块连续的内存空间来盛放数量为 size ,类型为所声明类型的数组元素。
由于是在连续内存上存储的,所以它的索引速度非常快,访问一个元素的时间是恒定的。也就是说与数组的元素数量无关,而且赋值与修改元素也很简单。