根据你的理解,请说明一下ArrayList和LinkedList的区别

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/04 19:35:04

根据你的理解,请说明一下ArrayList和LinkedList的区别
根据你的理解,请说明一下ArrayList和LinkedList的区别

根据你的理解,请说明一下ArrayList和LinkedList的区别
ArrayList的优势在于动态的增长数组,非常适合初始时总长度未知的情况下使用.
LinkedList的优势在于在中间位置插入和删除操作,速度是最快的,O(1),而ArrayList是O(n-i)的.
大道理请参看:
LinkedList类
LinkedList实现了List接口,允许null元素.此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部.这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque).
注意LinkedList没有同步方法.如果多个线程同时访问一个List,则必须自己实现访问同步.一种解决方法是在创建List时构造一个同步的List:
List list = Collections.synchronizedList(new LinkedList(...));
ArrayList类
ArrayList实现了可变大小的数组.它允许所有元素,包括null.ArrayList没有同步.
size,isEmpty,get,set方法运行时间为常数.但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间.其他的方法运行时间为线性.
每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小.这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义.当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率.
和LinkedList一样,ArrayList也是非同步的(unsynchronized).