ArrayList:底层是动态数组,存储数据连续。又因每个元素占用的长度一致,所以下标访问快。 插入速度比较慢(原因:扩容机制,数组长度不能,新增操作时,先要复制原数组在插入,并删除原来的数组)。但是如果开始设置足够的长度,并只在尾部插入,那效率会比 LinkedList 高。
    LinkedList:底层采用双向列表,可以存储在分散的内存中,适合插入和删除操作。不适合查询慢, 查询一般用迭代器先取出所有元素 在遍历。linkedList 不建议用 for 循环遍历,因为每次用 get(index)都要重头开始遍历,很不友好。每新增一个元素都需要维护一个 NODE 对象,这是列表新增时的主要开销。