Java集合框架(5): Stack源码分析

1
public class Stack<E> extends Vector<E>

简介

  1. Stack是继承Vector,实现了栈相关的操作。
  2. Stack也是线程安全的。

源码分析

构造方法

1
2
public Stack() {
}

方法

push入栈

1
2
3
4
5
6
7
/**
* 入栈,加入到容器末尾
*/
public E push(E item) {
addElement(item);
return item;
}

pop出栈

1
2
3
4
5
6
7
8
9
10
11
12
/**
* 出栈,删除栈顶元素并返回其值
*/
public synchronized E pop() {
E obj;
int len = size();
obj = peek();
removeElementAt(len - 1);
return obj;
}

peek获取栈顶元素

1
2
3
4
5
6
7
8
9
10
/**
* 获取栈顶元素
*/
public synchronized E peek() {
int len = size();
if (len == 0)
throw new EmptyStackException();
return elementAt(len - 1);
}

empty

1
2
3
public boolean empty() {
return size() == 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
/**
* 搜索元素的位置
* 返回元素在数组最后一次出现位置的索引
*/
public synchronized int search(Object o) {
int i = lastIndexOf(o);
if (i >= 0) {
return size() - i;
}
return -1;
}