ArrayList 是一种 “会自动扩增容量” 的 Array。
Array 与 ArrayList 的区别
- ArrayList 是 Array 的复杂版本
ArrayList 内部封装了一个 Object 类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于 ArrayList 的许多方法,如 Index、IndexOf、Contains、Sort 等都是在内部数组的基础上直接调用 Array 的对应方法。
- 存储的数据类型
ArrayList 可以存储异构对象,而 Array 只能存储相同数据类型的数据。
- 长度的可变
Array 的长度实际上是不可变的,二维变长数组实际上的长度也是固定的,可变的只是其中元素的长度。而 ArrayList 的长度既可以指定(即使指定了长度,也会自动2倍扩容)也可以不指定,是变长的。
- 存取和增删元素
对于一般的引用类型来说,这部分的影响不是很大,但是对于值类型来说,往 ArrayList 里面添加和修改元素,都会引起装箱和拆箱的操作,频繁的操作可能会影响一部分效率。另外,ArrayList 是动态数组,它不包括通过 Key 或者 Value 快速访问的算法,所以实际上调用 IndexOf、Contains 等方法是执行的简单的循环来查找元素,所以频繁的调用此类方法并不比你自己写循环并且稍作优化来的快,如果有这方面的要求,建议使用 Hashtable 或 SortedList 等键值对的集合。
Array
|
|
ArrayList
|
|