1.ArrayList
ArrayList<E> extends AbstractList<E> 底层实现是个动态数组
2.LinkedList
class LinkedList<E> extends AbstractSequentialList<E> 是个双向链表
区别:
get和set:ArrayList基于动态数组实现,get和set元素速度快,而LinkedList基于双向链表,每次get都要先通过for循环获取元素的index,再返回具体的值,因此速度慢
add和remove:ArrayList基于动态数组,每次add或者remove都要移动数组中的数据,重新排列数组下标,因此较慢,而LinkedList基于双向链表,每次add或者remove只需要改变指针的指向即可,因此速度快。