ArrayList:基于动态数组。连续内存存储,适合下标访问(随机访问)。扩容机制:因为数组长度固定,超出长度存数据时需要新建数组,将老数组数据拷贝到新数组,如果不是尾部插入数据还会涉及到元素移动(往后复制一份,插入新元素)。因此,ArrayList使用尾插法并指定初始容量可以极大提升性能,甚至超过LinkedList,因为linkedList需要创建大量的node对象。
LinkedList:基于双向链表。分散内存存储,适合做数据插入及删除,不适合查询,因为查询需要使用迭代器Iterator逐一遍历元素