Java中的栈和队列
栈:
public class Stack<E> extends Vector<E> { // 使用数组实现栈 // 构造一个空栈 public Stack() { } // 压入栈顶部 public E push(E item) { addElement(item); return item; } // 移除栈顶的对象,并返回 public synchronized E pop() { E obj; int len = size(); obj = peek(); removeElementAt(len - 1); return obj; } // 查看栈顶的对象,但不从栈中移除它 public synchronized E peek() { int len = size(); if (len == 0) throw new EmptyStackException(); return elementAt(len - 1); } // 判断栈是否为空 public boolean empty() { return size() == 0; } //返回对象在栈中的位置,以 1 为基数。 public synchronized int search(Object o) { int i = lastIndexOf(o); if (i >= 0) { return size() - i; } return -1; } }
队列接口:
FIFO (first-in-first-out)
package java.util; /** * @see java.util.Collection * @see LinkedList * @see PriorityQueue * @see java.util.concurrent.LinkedBlockingQueue * @see java.util.concurrent.BlockingQueue * @see java.util.concurrent.ArrayBlockingQueue * @see java.util.concurrent.LinkedBlockingQueue * @see java.util.concurrent.PriorityBlockingQueue * @since 1.5 * @author Doug Lea * @param <E> the type of elements held in this collection */ public interface Queue<E> extends Collection<E> { // 添加一个元素,如果队列已满则抛出IllegalStateException 异常 boolean add(E e); // 添加一个元素返回是否成功 boolean offer(E e);
// 移除并返回队首的元素,如果队列为空,抛出NoSuchElementException E remove(); // 移除并返回队首元素,如果队列为空,返回null E poll(); // 返回队列头部的元素,并不移除,如果队列为空,抛出NoSuchElementException E element();
// 返回队列头部的元素,并不移除,如果队列为空,返回null E peek(); }
LinkedBlockingQueue:待续