<span style="font-size:18px;">package com.lovo.util;
import java.util.ArrayList;
import java.util.List;
/**
* 栈(先进后出[FILO(First In Last Out)]的数据结构)
* @author hechao
*
* @param <T> 泛型参数
*/
public class Stack<T> {
private List<T> list = new ArrayList<T>();
/**
* 入栈(添加元素)
* @param x 待添加的元素
*/
public void push(T x) {
synchronized(list) {
list.add(x);
}
}
/**
* 出栈(删除元素)
* @return 栈顶元素
*/
public synchronized T pop() {
synchronized(list) {
return list.isEmpty()? null : list.remove(list.size() - 1);
}
}
/**
* 获得栈顶元素(不从栈中移除)
* @return 栈顶元素
*/
public T peek() {
synchronized(list) {
return list.isEmpty()? null : list.get(list.size() - 1);
}
}
/**
* 清空栈
*/
public void clear() {
synchronized(list) {
list.clear();
}
}
/**
* 判断栈是否为空
* @return 栈中没有元素返回true否则返回false
*/
public boolean isEmpty() {
return list.isEmpty();
}
/**
* 获得栈中元素的个数
*/
public int size() {
return list.size();
}
}
</span>