arraydeque和linkedlist的优缺点

更新时间:02-10 教程 由 灭队 分享

arraydeque和linkedlist的优缺点?

ArrayList,与LinkedList都是属于实现了List接口的类。首先从名字前缀开始看 ,Array表示数组,Link表示链表。

所以ArrayList底层是基于动态数组的。而LinkedList底层是基于双向链表的。

ArrayList必须是连续内存的,而LinkedList不要求连续内存。

ArrayList查询快,增加和删除慢;LinkedList增加和删除快,查询慢。

ArrayList 底层为动态数组,所以查询时是直接通过访问下标,查询效率高。而增加而删除时,为了保证内存的连续,增加和删除某一位置后,后方元素都得向前移动一位,

最坏情况就是删除第一个元素,则后面第2个到第n个元素都得往前移动一位。所以增加删除慢。

LinkedList底层为双向链表,不必保证内存上的连续,所以增删快,而查询时必须要经历从头到尾的遍历,所以查询慢。

为什么说ArrayList是基于动态数组呢?一般的数组,容量确定了就不可以再更改,也无法超过。但是ArrayList可以,

例如当数组元素数已满时调用了add方法向尾部添加一个元素,则此时会进行扩容,ArrayList会自动创建一个更大的数组,并将所有元素拷贝到新数组中,而原数组会被抛弃,

会被GC回收。扩容后新数组的容量为原来的1.5倍。

声明:关于《arraydeque和linkedlist的优缺点》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2199225.html