unity_数据结构(常见数据结构及适用场景)
常见的数据结构:
1.Array:
最简单的数据结构
特点:
数组存储在连续的内存上。
数组的内容都是相同类型。
数组可以直接通过下标访问。
优点:
由于是在连续内存上存储的,所以它的索引速度非常快,访问一个元素的时间是恒定的也就是说与数组的元素数量无关,而且赋值与修改元素也很简单。
缺点:
由于是连续存储,所以在两个元素之间插入新的元素就变得不方便。
声明一个新的数组时,必须指定其长度。过长时会浪费内存,过短时,则面临这溢出的风险。
2.ArrayList:
为了解决数组创建时必须指定长度以及只能存放相同类型的缺点而推出的数据结构。ArrayList是System.Collections命名空间下的一部分。优点:
不必在声明ArrayList时指定它的长度
可以存储不同类型的元素,这是由于ArrayList会把它的元素都当做Object来处理。
3.List<T>:
为了解决ArrayList不安全类型与装箱拆箱的缺点
优点:
融合了Array可以快速访问的优点以及ArrayList长度可以灵活变化的优点。
4.LinkedList<T>:
链表和数组最大的不同之处就是在于链表在内存存储的排序上可能是不连续的。
优点:
添加元素和删除元素都要比数组要有优势。
缺点:
访问时候无法利用下标,而是必须从头结点开始,逐次遍历下一个节点直到寻找到目标。所以当需要快速访问对象时,数组无疑更有优势。
5.队列
先进先出
6.栈
先进后出
7.Dictionary<K,T>:
以空间换时间
几种常见数据结构的使用情景
Array 需要处理的元素数量确定并且需要使用下标时可以考虑,不过建议使用List<T>
ArrayList 不推荐使用,建议用List<T>
List<T>泛型List 需要处理的元素数量不确定时 通常建议使用
LinkedList<T> 链表适合元素数量不固定,需要经常增减节点的情况,2端都可以增减
Queue<T> 先进先出的情况
Stack<T> 后进先出的情况
Dictionary<K,T> 需要键值对,快速操作