一、底层数据结构不同
ArrayList底层是基于数组实现的,LinkedList底层是基于链表实现的。
二、应用场景不同
ArrayList更适合随机查找操作,LinkedLis更适合删除和添加操作。
注:LinkedList底层是链表,执行get()方法时需要循环遍历,所以查询效率更慢(getFirst()和getEnd()方法有标记,查询快),而ArrayList是直接根据index下标去获取数据的,所以效率快;增删操作时LinkedList直接删除元素即可,所以效率快,而ArrayList需要移动index,所以效率慢。
三、实现接口
ArrayList和LinkedList都实现了List接口,但是LinkedList还额外实现了Deque接口,所以LinkedList还可以当做队列来使用。