存储结构
ArrayList基于动态数组,在内存中是顺序存储,适合下标访问。
LinkedList基于链表,链式结构存储分散在内存中,适合做数据插入或删除操作。
读写性能
ArrayList是基于数组,所以访问元素是通过下标访问,读取效率高。插入元素分为三种情况;
ArrayList使用尾插法配合指定初始容量可以尽可能发挥性能,甚至超越LinkedList(因为LinkedtList有个内部类Node,在每次插入元素时需要创建Node对象)。
LinkedList是基于链表,所以不适合做查询,访问元素需要逐一遍历。遍历LinkedList必须使用迭代器iterator最好不要使用for循环,因为每次for循环get(i)时都有对lsit重新进行遍历,效率极低。但对于插入和删除元素有优势,链表在插入时只需要把前结点的next指针指向新结点,把新结点的next指针指向后结点即可。删除结点时只需把被删除结点的前结点next指向后结点。
总结
读多写少的场景适合用ArrayList;
频繁插入删除元素LinkedList更适合一些。
原文:https://www.cnblogs.com/heyuhao/p/14869318.html