ArrayList
ArrayList是线性表(动态数组);线程不安全;基于Object数组实现,有序
默认容量大小是10;扩容后是(15)原来的1.5倍(扩容是创建一个新的数组,在复制)
查询快
get() 直接读取第几个下标,复杂度 O(1)<br>
增加删除慢
add(E) 添加元素,直接在后面添加,复杂度O(1)
add(index, E) 添加元素,在第几个元素后面插入,后面的元素需要向后移动,复杂度O(n)<br>
remove()删除元素,后面的元素需要逐个移动,复杂度O(n)
遍历用for 循环,效率高,用迭代器iterator 遍历会非常慢,因为做了很多安全检查但支持边遍历边remove
vector
Vector是线程安全的;涉及到元素更改的函数之前都加了关键字synchronized
Vector是矢量队列;是JDK1.0版本添加的类,他继承于AbstractList,实现了接口库List,RandomAccess,和Cloneable。
Vector与ArrayList的实现大同小异,都是使用数组作为底层的存储器,区别主要是线程安全
Stack
LinkedList
LinkedList 是基于链表实现的;线程不安全
添加删除快
add(E) 添加到末尾,复杂度O(1)
add(index, E) 添加第几个元素后,需要先查找到第几个元素,直接指针指向操作,复杂度O(n)
remove()删除元素,直接指针指向操作,复杂度O(1)
查询慢
get() 获取第几个元素,依次遍历,复杂度O(n)