Vector
1 | public class Vector<E> |
数据结构
- Vector 是矢量队列,它是
JDK1.0
版本添加的类。继承于AbstractList
,实现了List
,RandomAccess
,Cloneable
这些接口。 - 继承于
AbstractList
,是一个队列,支持相关的添加、删除、修改、遍历等功能 - 实现了
RandmoAccess
接口,即提供了随机访问功能。 - 线程安全,不需要线程安全,则使用
ArrayList
- 初始长度10
- 成员变量:
1 | protected Object[] elementData; //动态数组,增长由ensureCapacity()控制 |
源码分析
ensureCapacity
方法
1 | public synchronized void ensureCapacity(int minCapacity) { |
由grow()方法进行扩容操作
1 | private void grow(int minCapacity) { |
删除元素
1 | public synchronized void removeElementAt(int index) { |
增加元素
1 | public synchronized void insertElementAt(E obj, int index) { |
addAll()
1 | public synchronized boolean addAll(int index, Collection<? extends E> c) { |
elements()
1 | //返回Vector中全部元素对应的Enumeration, Enumeration迭代不会出现线程安全问题 |
Stack
1 | public class Stack<E> extends Vector<E> |
- Stack是栈。它的特性是:先进后出(FILO, First In Last Out)
- 继承于Vector, 通过数组实现,而非链表
源码分析
push()
1 | //将元素存入栈顶 |
pop()
1 | //获取栈顶元素,删除 |
peek()
1 | //获取栈顶元素,不删除 |
总结
Vector
是矢量队列,和ArrayList
一样,它也是一个动态数组,由数组实现。但是ArrayList
是非线程安全的,而Vector
是线程安全的。Stack
是栈,它继承于Vector
。它的特性是:先进后出(FILO, First In Last Out)
。