C#中ArrayList、List、Dictionary等数据结构的特点

ArrayList

ArrayList继承了IList接口,插入的元素可以是任何类型,因为ArrayList会对插入的元素进行装箱和拆箱。

装箱就是将值类型的数据打包到引用类型的实例中(转为Object对象)。

int number = 100;
object obj = (object) i;

拆箱就是从引用数据中提取值类型,而装箱和拆箱的过程是很耗费性能的。并且因为可以插入不同类型的数据,在使用ArrayList时很可能会报类型不匹配的错误,即ArrayList不是类型安全的。

object obj = 100;
int i = (int) o;

LinkedList

所有一般不使用ArrayList来处理数据。LinkedList 链表集合,对于随机访问和修改(get、set),LinkedList不如ArrayList,因为LinkedList需要移动指针。

对于新增和删除操作,LinkedList比较占优势,因为ArrayLis需要移动数据,而LinkedList只需要变动指针。

LinkedList的实现:未完成。

泛型List

泛型,是一种特性,允许我们在强类型编程语言里定义一些可变部分。

List也继承了IList,实现了和ArrayList基本相同的功能,但区别是,在声明List集合时,需要声明List集合内数据的对象的类型。

List <int> list = new <int> List();

Dictionary

Dictionary适合在单线程程序中,体现顺序的情景中使用。Dictionary是非线程安全的:当出现枚举与写访问互相争用这种极少发生的情况时,必须在整个枚举过程中锁定集合。 若要允许多个线程访问集合以进行读写操作,则必须实现自己的同步。

猜你喜欢

转载自blog.csdn.net/u012187817/article/details/80459781