Unity 3D 中常用的数据结构

常用的数据结构复杂度
数据结构 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 ,类型为所声明类型的数组元素。

由于是在连续内存上存储的,所以它的索引速度非常快,访问一个元素的时间是恒定的。也就是说与数组的元素数量无关,而且赋值与修改元素也很简单。

由于是在连续内存上存储的,所以在两个元素之间插入新的元素就变得不方便。而且声明一个新的数组时,必须指定其长度或初始化其元素,就会存在一个潜在的问题。那就是当声明的长度过长时,显然会浪费内存,当声明长度过短时,则面临溢出的风险。

ArrayList 数组

为了解决 Array 创建时必须指定长度,以及只能存放相同类型的缺点而推出的数据结构。

ArrayList 解决了 Array 的一些缺点:

不必在声明 ArrayList 时指定它的长度,这是由于 ArrayList 对象的长度是按照其中存储的数据来动态增长与缩减的。

ArrayList 可以存储不同类型的元素。这是由于 ArrayList 会把它的元素都当作 Obect 来处理。因

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值