1.ArrayList
ArrayList是数组结构。默认大小10,容量不足时需动态扩容为原来的1.5倍
它的特别是查询快,增删慢。
物理上连续,空间上不连续
为什么会增删慢呢?
当add()的时候,ArrayList需要找到在数组中的index,插入进去。然后这个位置及之后的所有index都会整体往后移一位。
当remove()的时候,需要找到index,删除掉。然后这个位置之后所有的index整体往前移动一位。
所以速度相对来说比较慢。
当ArrayList数据全部删除的时候,是从最后一个元素开始向前删除 的。
2.LinkList
LinkList是双向链表结构。
它的特点是查询慢,增删快。
物理上不连续,空间上连续。
就像锁链一样。每个元素之间循环双向链表,互相指向。
需要从头遍历从而找到对应的数据,这样的结果就是查询起来速度较慢。
当增加或者删除的时候,只需要改变一下索引位置的元素的指针指向就可以。所以速度比较着ArrayList()就会快点。
故对于顺序读写多的场景使用ArrayList
对于中间增删多的场景使用LinkedList