unity常用的数据结构

一.数组(array)

  1. 数组属于线性结构,在内存中是连续存放的。
  2. 数组的元素类型必须相同。
  3. 数组可以直接通过下标访问。
  4. 数组的查找速度非常快,新增和删除速度慢。
  5. 数组在初始化时要指定数组长度。

优:存储在连续内存上;内容都是相同类型;可以通过下标访问,查找的速度很快;

缺:必须指定其长度,元素插入也不方便(过长浪费内存,多段会溢出),新增和删除也很慢;

二,动态数组(ArrayList)
         1.ArrayList的底层其实就是一个数组。
         2.ArrayList在声明时不必指定长度,会根据存储的数据动态的增加或减少长度。
         3.ArrayList会把所有的元素都当做Object处理,因此可以存储不同数据类型的元素。
         4.插入和删除一个元素时,会移动它之后所有元素的位置,效率低;
         5.ArrayList是非类型安全的,在入和删除元素时会进行拆箱和装箱问题,影响性能,效率低。
优:可动态增加和删除 ,可存储不同类型;

缺:类型不安全,因为存储的是不同类型,都会当Object来处理。插入值类型会发生装箱,索引取值会拆箱,影响性能,效率低。

三.双向链表(LinkedList)
         1.链表的节点在内存中的空间是不连续的,每块空间称作一个节点,每个节点都存有一个前驱和后置指针,分别指向前一个节点和后一个节点,因此向链表中添加和删除元素的效果高,只需要更改相应节点的指针指向即可。
         2.链表的查找效率低。查找元素时不能通过下标进行访问,只能从头开始通过地址按顺序查找。
优:插入和删除操作无需调整结构容量,靠各个对象的指针决定,尤其是元素的数量不固定需要在两头插入时;

缺:最大的缺点是存储在内存空间不一定是连续的,无法利用下标查找。

四.List泛型

  1. List是ArrayList的泛型类。
  2. 泛型List需要在声明时指定具体的类型。
  3. 泛型List没有装箱和拆箱操作,因此List比ArrayList效率高而且类型安全。

 优:Array和ArrayList结合,泛型规定了其类型,避免了拆装箱操作,及安全又提升了效率;

五.Queue(队列)

  1. 链表是先进先出的原则,最先进入的元素最先被访问,最后进入的元素最后被访问。
  2. Enqueue入队列,Dequeue出队列并返回列首元素,Peek只返回列首元素

优:能对集合进行顺序处理(先进先出)。能接受null值,并且允许重复的元素。

缺:不能通过下标访问;

六.Stack(堆栈)

  1. 堆栈是先进后出的原则,最先插入的元素最后被访问,最后插入的元素最先被访问。
  2. Push入栈,Pop出栈并返回栈顶元素,Peek只返回栈顶元素。

优:能对集合进行顺序处理(先进后出)。能接受null值,并且允许重复的元素。

缺:不能通过下标访问;

 七.Dictionary

  1. 创建字典时需要指定key和value的数据类型。
  2. 字典中的key值是唯一的,value的值可以不唯一。
  3. 可以通过key快速查找对应的value,速度快,但是消耗内存。

优:(以内存换时间,需要键值对,快速操作)dictionary内部使用哈希表来存储元素对应的位置,通过哈希值快速从哈希表定位元素所在的位置索引,从而快速获取key对应的value;

缺:通过更多的内存开销来满足我们对速度的追求。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值