LinkedList和ArrayList
区别:
LinkedList是基于双向链表,头尾插入删除效率高,随机访问慢(要沿着链表一个一个遍历),占用内存多。
ArrayList是基于数组,尾部插入、删除性能还行,其他部分插入、删除都会一个一个移动数据,因此性能会低 ,可以利用cpu缓存、局部性原理降低内存占用。
注意:
1.如果数据有较多的随机访问,ArrayList对象要优于LinkedList对象;
2.如果数据有更多的插入或者删除操作,较少的随机访问,LinkedList对象要优于ArrayList对象;
3.LinkedList虽然头尾插入删除效率高,ArrayList尾部插入、删除性能还行,但是ArrayList的插入、删除操作也不一定比LinkedList慢,如果在集合靠近末尾的地方插入,那么ArrayList只需要移动较少的数据,而LinkedList则需要一直查找到列表尾部,反而耗费较多时间,这时ArrayList就比LinkedList要快。