ArrayList和LinkedList 的区别

我们都知道Java的集合存储分为值存储和 key-value方式的存储,也就是Conllection和map两种

值存储又可以分为:

  • List
  • Set

而List又有常用的ArrayList和LinkedList ,那么两者有什么区别呢?


ArrayList和LinkedList 的区别

底层:

  • ArrayList的底层使数组
  • LinKedList的底层时链表

优点:

  • ArrayList由于底层使用的是数组,所以查询特定的元素特别快
  • LinKedList由于 底层使用的是链表,所以插入和删除特别快

缺点:

  • 由于数组在内存中是一块连续的内存,如果插入或者删除,需要移动内存, 所以ArrayList在插入或删除会比较慢
  • 链表不要求内存是连续的,插入时不需要移动内存,只需改变引用执行即可,所以LinKedList在插入或删除效率高,比较快

使用场景:

  • ArrayList:使用在查询比较多,删除或插入比较少

  •  

    LinkedList:使用在查询比较少,删除和插入比较多

总结:

  • ArrayList:由于底层是使用数组实现的,所以查询特定元素的时候速度比较快,但是在插入和删除的时候需要移动内存,所以插入和删除比较慢,建议使用在查询比较多,删除和插入少的场景。
  • LinkedList:底层是由链表组成的,内存不是连续的,在插入和删除的时候不需要移动内存,所以效率比较高,但是查询的时候需要从头开始一个一个查找,造成查询比较慢,建议使用在查询比较少,删除和插入多的场景。

猜你喜欢

转载自blog.csdn.net/weixin_44519467/article/details/106738354