前言:
最近在工作中常常用到list,这篇博客来总结一下list.以便日后方便查找.
核心:
类型/内容
ArrayList
LinkList
Vactor
数据结构
数组结构
链表结构
数组
查询速度
快
慢
快
增删效率
慢
快
慢
线程安全
不安全
不安全
线程安全(synchronized)
时间复杂度
随机访问时间固定
增加元素开销固定
随机访问
空间复杂度
list列表结尾预留一定容量空间
每个元素消耗空间
容量空间
扩容
新容量=(旧容量*3)/2+1即1.5倍+1
2倍
ArrayList:底层数据结构是数组结构,你就可以把它看成是一个可变大小的且只能装对象的数组。因为数组有索引(角标)所以ArrayList的查询速度快,而添加删除元素速度稍慢。因为,你每删除或者添加一个元素,你都要移动所添加或删除元素后面的所有数据,该集合是线程不同步的
LinkedList:底层数据结构是链表结构的。链表数据结构是没有索引的,当前元素只和他的前一个和后一个元素有关联就像一串珠子一样,该数据结构的特点是,增加删除快,而查询比较慢,因为增加删除只需要找到当前元素,然后断掉当前元素与它前一个和后一个元素的关联即可,和数组比,链表不用重复大部分的数据移动工作,但是因为没有索引所以链表数据结构要一个一个的查询数据,所以LinkedList的查询速度稍慢
Vector:底层数据结构也是数组结构的,除了线程安全问题上不同于ArrayList之外,其余几乎一样。
数组结构的查询速度比较快,因为可以通过索引快速锁定元素位置。链表结构的插入速度较快。
总结:
不断总结,加油!