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是非线程安全的:当出现枚举与写访问互相争用这种极少发生的情况时,必须在整个枚举过程中锁定集合。 若要允许多个线程访问集合以进行读写操作,则必须实现自己的同步。
网友评论