ArrayList 和 LinkedList 的区别
1. ArrayList 实现了基于动态数组的数据结构,LinkedList 是基于链表的数据结构。
2. 对于随机访问 get 和 set,ArrayList 优于 LinkedList,因为 LinkedList 要移动指针(如 get 的时间复杂度分别为O(1)和O(n))。
3. 对于新增和删除操作 add 和 remove,LinedList 占优势,因为 ArrayList 要移动数据。
4. ArrayList 在使用的时候默认的初始化数组的长度为10,如果空间不足则会采用2倍的形式进行容量的扩充。
如果保存大数据的时候有可能造成垃圾的产生以及性能的下降,这个时候就可以用 LinkedList 子类保存.
5. ArrayList 的空间浪费主要体现在在 list 列表的结尾预留一定的容量空间,而 LinkedList 则体现在它的每一个元素都需要消耗相当的空间.
总结:
当操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用 ArrayList 会提供比较好的性能;
当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用 LinkedList。