Java基础系列:ArrayList与LinkedList区别

对于初学Java者,相信还有一部分人不了解ArrayList与LinkedList。

都是List的子类

List就是一个有序的集合,什么叫有序?就是它会维护元素加入集合的先后顺序。

(区别于Set,Set则是无序的集合)

ArrayList是数组实现,LinkedList是链表实现

  • 数组的缺点:

在List中间插入元素后,后面的每个元素都要往后挪一个位置,很明显效率低。

Java基础系列:ArrayList与LinkedList区别

数组中有4个红球


Java基础系列:ArrayList与LinkedList区别

在位置2插入绿球,原来排在后面的两个红球都得往后挪一位

  • 数组的优点:

可以直接通过索引访问,效率高。

链表的优点:插入元素快

请看如下两张图,一开始链表中有按顺序的三个球ABC,现在需要往A球与B球之前插入D球,这里只需要先把AB的连接断开,再建立AD连接、DB连接,原来B、C的位置不需要往后挪。

Java基础系列:ArrayList与LinkedList区别

链表中有按顺序的ABC三个红球

Java基础系列:ArrayList与LinkedList区别

往链表的A球与B球中间插入绿球D

链表的缺点:从上图可以看出,如果要访问链表的第4个元素,需要从第一个元素(A球)开始,沿着连接往下找,相对于数组直接通过索引访问,链表的性能会慢一些,尤其是链表中元素很多的时候,访问会越慢。

总结

ArrayList 适合频繁访问,不适合频繁插入。

LinkedList 适合频繁插入,不适合频繁访问。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章