文章首发于:clawhub.club


线程安全

ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全;

数据结构

LinkedList 是基于双向链表实现的,ArrayList 是基于数组实现的。

快速随机访问

ArrayList 支持随机访问,所以查询速度更快,LinkedList 添加、插入、删除元素速度更快。

内存空间占用

ArrayList的空间浪费主要体现在在list列表的结尾会预留一定的容量空间,LinkedList使用Node来存储数据每个Node中不仅存储元素的值,还存储了前一个 Node 的引用和后一个 Node 的引用,占用内存更多。

遍历方式选择

实现了RandomAccess接口的list,优先选择普通for循环 ,其次foreach,
未实现RandomAccess接口的list, 优先选择iterator遍历(foreach遍历底层也是通过iterator实现的),大size的数据,千万不要使用普通for循环。