java中ArrayList 和LinkList区别

1.ArrayList

ArrayList是数组结构。默认大小10,容量不足时需动态扩容为原来的1.5倍

它的特别是查询快,增删慢。

物理上连续,空间上不连续

为什么会增删慢呢?

当add()的时候,ArrayList需要找到在数组中的index,插入进去。然后这个位置及之后的所有index都会整体往后移一位。

当remove()的时候,需要找到index,删除掉。然后这个位置之后所有的index整体往前移动一位。

所以速度相对来说比较慢。

当ArrayList数据全部删除的时候,是从最后一个元素开始向前删除 的。

2.LinkList

LinkList是双向链表结构。

它的特点是查询慢,增删快。

物理上不连续,空间上连续。

就像锁链一样。每个元素之间循环双向链表,互相指向。

需要从头遍历从而找到对应的数据,这样的结果就是查询起来速度较慢。

当增加或者删除的时候,只需要改变一下索引位置的元素的指针指向就可以。所以速度比较着ArrayList()就会快点。


  故对于顺序读写多的场景使用ArrayList

  对于中间增删多的场景使用LinkedList

你可能感兴趣的:(java中ArrayList 和LinkList区别)