常用数据结构
Array、ArrayList、List、LinkedList、Queue、Stack、Dictionary<key,value>
数组Array
特点:
存储在连续的内存上
元素类型相同
直接通过下表访问
创建时需要指定数组长度
根据下标索引元素并进行相关操作速度快,但插入或删除元素比较麻烦
ArrayList(非泛型集合)
特点:
不需要指定长度,其长度是依据存储的数据动态增长和缩减
可以存储不同类型的元素,它是直接把元素当做Object来处理
因存储不同类型的元素,集合的装箱和拆箱操作是十分频繁的,对cpu性能影响较大
不安全性,把元素当做Object来处理,有可能发生类型不匹配的情况
List(泛型集合)
不需要指定长度
元素类型都相同
确保类型安全
较少装箱与拆箱的操作
与数组比较像,其实泛型集合内部是通过Array来实现的,它不确定长度,其长度是根据存储的元素的长度来创建数组存储元素,当添加的元素长度超过数组的剩余长度,就会创建一个倍增后的数组来存储元素
LinkedList
特点:
存储在不连续的内存上,索引的速度慢
对链表的插入或删除无需调整结构容量,不需要移动元素,只是改变部分元素的指向即可
Queue(队列)
特点:
先进先出
默认初始容量32,增长因子为2.0
使用Enqueue判断队列长度是否够用,若不够,依据增长因子增加容量
Stack(栈)
特点:
后进先出
默认容量是10
使用pop和push实现进出栈的操作
Dictionary<key,value>(字典)
特点:
字典中每一个元素值都有一个键值与之对应,根据键值查找速度很快
创建一个字典,内部会有两个数组分别保存键值和元素
不能包含重复的键
使用场景
Array 被处理的元素数量确定且需要使用下标
ArrayList 不建议使用
List<T> 元素数量不确定
LinkedList<T> 数量不确定,经常需要修改
Queue<T> 元素先进先出
Stack<T> 先进后出
Dictionary<key,value> 键值对,快速查找