java面试 – ArrayList和LinkedList区别

ArrayList:

1.基于动态数组

2.连续内存存储空间

3.适合下标索引访问(随机访问)

4.动态扩容:超出长度需要重建数组,将老数组数据重新拷贝,非尾部插入会涉及元素移动,使用尾插法并指定初始容量会极大提升性能,甚至超过LinkedList(创建大量node对象也要耗时)

LinkedList:

1.基于链表

2.分散存储在内存中

3.适合插入删除操作,不适合查询

4.需要使用iterator迭代,不要使用get(I)通过索引访问,会引起list重新遍历,不要使用indexOf返回索引进行遍历

5.实现了Deque<E>接口,是一个双端队列

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享