java的队列和栈的实现有多个实现,这就造成我们操作队列或栈的时候使用方法名称的多样性,为了统一和见名知意,我们统一使用如下。
1. 队列
- 一般队列
public interface Queue<E> extends Collection<E> {
//添加到队列尾部,可能抛出的异常。如果容量被制定且满,抛出异常
boolean add(E e);
/**
与add功能一样,但是容量受限的队列不会抛出一样
*/
boolean offer(E e);
/**
与poll一样。如果队列为空,抛出NPE(空指针异常)
*/
E remove();
/**
移除队列头部数据并返回,不会抛出异常。如果队列为空,返回null
*/
E poll();
/**
与peek()功能一样,当队列为空抛出NPE
*/
E element();
/**
获取队头数据不移除,不会抛出异常
*/
E peek();
}
总结:
添加到队列尾部使用offer(比add好在容量限制不抛出异常。)
移除队列头部并返回poll(比remove好在,队列为空返回null而不是抛出NPE)
获取队列头部元素peek(比element好在,队列为空返回null而不是抛出NPE)
- 双端队列
public interface Deque<E> extends Queue<E> {
/**
添加到队列头部
*/
void addFirst(E e);
/**
添加到队列尾部
*/
void addLast(E e);
/**
与addFirst一样。区别容量受限,不抛出异常
*/
boolean offerFirst(E e);
boolean offerLast(E e);
E removeFirst();
E removeLast();
E pollFirst();
E pollLast();
E getFirst();
E getLast();
E peekFirst();
E peekLast();
}