Unity中常用的是字典、列表、队列、栈Stack
内部采用哈希表实现,key不能为null。优势:增、删、查、改,但是对于排序却不方便。
增:如果Count小于容量,则O(1);否则等于容量大小时,内部会自动重新分配数组,并将数据复制到新数组中,再添加新的数据,为O(n)操作,n为Count
删:Remove函数,不会引发异常,为O(1)操作。
查:接近O(1)操作,具体速度决定于指定类型的哈希算法质量。
Clear函数:将Count设置为0,释放集合中对对象的引用,容量不变,为O(n)操作。
判断是否存在某个key:ContainsKey函数,在新增数据前需要判断是否存在这个key,为O(1)操作。
判断是否存在某个Value:ContainsValue函数,属于线性搜索,为O(n)操作。
增删查改没有字典好,优势:方便排序。
如果存放的是同种类型的数据,使用泛型List,常用开发中一般不会存储不同类型的数据。
与ArrayList相比,大多数情况下性能更好且安全。
增:Add函数,将数据添加到结尾处。如果Count小于容量,则O(1);否则等于容量大小时,内部会自动重新分配数组,并将数据复制到新数组中,再添加新的数据,为O(n)操作;
AddRange函数,将多个数据添加到结尾处。如果添加数据个数加上已有数据个数小于容量,为O(添加的数据个数)操作;否则,内部会自动重新分配数组,并将数据复制到新数组中,再添加新的数据,为O(已有数据个数+添加的数据个数)操作。
Insert函数,为O(n)操作,如果插入的位置等于Count,但是小于容量,则直接放到尾部。如果Count大于容量,会重新分配内存。
删:Remove函数,为O(n)操作。
RemoveAt函数,为O(n)操作,如果移除的是中间的元素,还会将后面的元素向前移动。
查:Find函数,属于线性搜索,为O(n)操作。
Clear函数:将Count设置为0,释放集合中对对象的引用,容量不变,为O(n)操作。
判断是否存在某个Value:Contains函数,属于线性搜索,为O(n)操作。
排序:Sort函数,为O(nlogn)操作。
循环数组,先进先出,一般用于对顺序处理某些数据时使用。
一般用于对象池,只关心放进取出,不关心具体取出哪一个数据。
上一篇:没有了!
下一篇:没有了!