相同点:
数据特征相同:类中数据可重复,插入有序,可以有多个null值
继承关系相同:均直接或间接继承了AbstractList类,并实现了List接口
遍历:都能使用ListIterator迭代器
不同点:
底层数据结构不同:ArrayList底层数据结构是数组,LinkedList底层数据结构是双向链表。
扩容不同:LinkedList不需要扩容,ArrayList需要考虑扩容。
继承不同: 因为LinkedList继承了Deque接口,所以LinkedList还实现了Deque接口的特有方法。
操作效率不同:ArrayList查询、修改的效率高,增加、删除的效率较低,LinkedList增加、删除的效率高,查询、修改的效率较低。
应用场景不同: ArrayList适用于查询量大,增删频率较低的场景,LinkedList适用于增删量较大,查询频率较低的场景。
默认值不同: LinkedList没有默认值,ArrayList有默认值。
一般默认遍历方式不同:ArrayList一般用for循环遍历,LinkedList一般用迭代器遍历,因为ArrayList用for循环遍历比iterator迭代器遍历快,LinkedList用iterator迭代器遍历比for循环遍历快。