ArrayList与LinkedList

  ArrayList与Linkedlist的增删改查问题以及集合选择问题

线程:安全:Vector

   不安全:ArrayList,LinkedList

        增删多:LinkedList

        查询多:ArrayList

   1. ArrayList为什么查询快:

       底层是数组,在内存中开辟空间,是连续的,查询时可以直接定位到查询的位置(根据偏移量查询)

   LinkedList为什么查询慢:

       因为LinkedList是底层是链表,查询时单链表是[元素|下一个元素地址这种结构]只能从第一个依次开始查,在Java中LinkedList是双连边结构[上一个元素地址|元素|下一个元素地址]这种结构查询时,判断指针是距离首端近还是尾端近,离首近则从第一个开始查询,否则从末尾开始。(速度有所提高),越是查询的是中间元素速度越慢。

  2.ArrayList为什么增删慢:

      增删时因为是数组结构当删除一个元素是其他元素都要移动,就是慢的原因,当然在末尾增加就没有这个问题也会快一些。

  LinkedListt为什么增删快:

      增删时时链表结构,在内存中结构元素存储不连续增删时最多影响两个元素。就是快的原因。

     加油:           

原文地址:https://www.cnblogs.com/meani/p/11252962.html