[java之list比较]

来源:互联网 发布:犀牛软件界面 编辑:程序博客网 时间:2024/06/04 00:22

前言:

最近在工作中常常用到list,这篇博客来总结一下list.以便日后方便查找.

核心:

类型/内容

ArrayList

LinkList

Vactor

数据结构

数组结构

链表结构

数组

查询速度

增删效率

线程安全

不安全

不安全

线程安全(synchronized)

时间复杂度

随机访问时间固定

增加元素开销固定

随机访问

空间复杂度

list列表结尾预留一定容量空间

每个元素消耗空间

容量空间

扩容

新容量=(旧容量*3)/2+1即1.5倍+1

 

2倍


ArrayList:底层数据结构是数组结构,你就可以把它看成是一个可变大小的且只能装对象的数组。因为数组有索引(角标)所以ArrayList的查询速度快,而添加删除元素速度稍慢。因为,你每删除或者添加一个元素,你都要移动所添加或删除元素后面的所有数据,该集合是线程不同步的

LinkedList:底层数据结构是链表结构的。链表数据结构是没有索引的,当前元素只和他的前一个和后一个元素有关联就像一串珠子一样,该数据结构的特点是,增加删除快,而查询比较慢,因为增加删除只需要找到当前元素,然后断掉当前元素与它前一个和后一个元素的关联即可,和数组比,链表不用重复大部分的数据移动工作,但是因为没有索引所以链表数据结构要一个一个的查询数据,所以LinkedList的查询速度稍慢

Vector:底层数据结构也是数组结构的,除了线程安全问题上不同于ArrayList之外,其余几乎一样。

数组结构的查询速度比较快,因为可以通过索引快速锁定元素位置。链表结构的插入速度较快。


总结:

不断总结,加油!


原创粉丝点击