LinkedList和ArrayList区别
- 底层数据结构不同,ArrayList底层数据结构是数组,LinkedList底层数据结构是双向链表(1.7之后是双向链表,1.7之前是双向循环链表)
- ArrayList实现了RandomAccess接口,可以实现随机访问,而LinkedList不行
- LinkedList底层是双向链表,所以不需要扩容,而ArrayList底层是数组,刚开始是空数组,第一次插入时数组扩容为10个默认大小,之后是1.5倍扩容
- ArrayList时间复杂度 查找O(1) 增删O(n)
LinkedList时间复杂度 查找O(n) 增删O(1) - LinkedList可以当作队列来使用,此时拥有队列的特点。
相同点
都实现了list,clone和java.io.Serializable接口,所以
- 元素可以重复,可以为null。
- 可以使用clone方法进行克隆。
- 可以进行序列化