ArrayList底层使用的是数组数据结构,因为数组有索引(角标)所以ArrayList的查询速度快,而添加删除元素速度稍慢。因为,你每删除或者添加一个元素,你都要移动所添加或删除元素后面的所有数据,该集合是线程不同步的
LinkedList底层使用的是链表数据结构,链表数据结构是没有索引的,当前元素只和他的前一个和后一个元素有关联就像一串珠子一样,该数据结构的特点是,增加删除快,而查询比较慢,因为增加删除只需要找到当前元素,然后断掉当前元素与它前一个和后一个元素的关联即可,和数组比,链表不用重复大部分的数据移动工作,但是因为没有索引所以链表数据结构要一个一个的查询数据,所以LinkedList的查询速度稍慢
Vector:底层使用的是数组数据结构,和ArrayList的功能相当,但是Vector是线程同步的,JDK已经对Vector的底层源码中可能出现同步的操作加上了同步锁,但是线程同步之后有弊端,那就是每当操作Vector集合,都会去判断同步锁,较为浪费系统资源。而我们完全可以使用ArrayList来代替Vector,如果需要同步代码,我们也可以自己手动加上同步锁 |