Queue队列接口
public interface Queue<E> extends Collection<E>
在尾部添加元素 (add, offer):
add(e) 会在长度不够时抛出异常:IllegalStateException;
offer(e) 只返回false
删除头部元素 (remove, poll),返回头部元素,并且从队列中删除
remove() 会在没元素时抛出异常:NoSuchElementException;
poll() 返回null;
查看头部元素 (element, peek),返回头部元素,但不改变队列
element()会在没元素时抛出异常:NoSuchElementException;
peek() 返回null;
//代码实现队列
//列用Queue实现队列(LinkedList)
Queue queue = new LinkedList();
queue.offer("1");
queue.offer("2");
queue.offer("3");
while (queue.peek() != null){
System.out.println(queue.poll());
}
//利用Queue实现队列(ArrayDeque)
Queue queue2 = new ArrayDeque();
queue2.offer("1");
queue2.offer("2");
queue2.offer("3");
while (queue2.peek() != null){
System.out.println(queue2.poll());
}
************************************************************************************
Deque双端队列接口
Deque接口是Queue接口的子接口,它代表一个双端队列,该队列允许从两端来操作队列中的元素。Deque不仅可以当成双端队列使用,而且可以当成栈来使用。
public interface Deque<E> extends Queue<E>
插入方法:
addFirst(e)
addLast(e)
offerFirst(e)
offerLast(e)
删除方法:
removeFirst()
removeLast()
pollFirst()
pollLast()
查看元素
getFirst()
getLast()
peekFirst()
peekLast()
removeFirstOccurrence(e):删除第一个出现的指定元素
removeLastOccurrence(e):删除最后出现的指定元素
//利用Deque双端队列实现(LinkedList)
Deque deque = new LinkedList();
deque.offerLast("1");
deque.offerLast("2");
deque.offerLast("3");
while (deque.peekFirst() != null){
System.out.println(deque.pollFirst());
}
//利用Deque双端队列实现(ArrayDeque)
Deque deque2 = new ArrayDeque();
deque2.offerLast("1");
deque2.offerLast("2");
deque2.offerLast("3");
while (deque2.peekFirst() != null){
System.out.println(deque2.pollFirst());
}
************************************************************************************
Stack(通过Deque实现)
push(e):push表示入栈,在头部添加元素,栈的空间可能是有限的,如果栈满了,push会抛出异常IllegalStateException。
pop():pop表示出栈,返回头部元素,并且从栈中删除,如果栈为空,会抛出异常NoSuchElementException。
peek():peek查看栈头部元素,不修改栈,如果栈为空,返回null。
//利用Deque实现栈(LinkedList)
Deque stack = new LinkedList();
stack.push("1");
stack.push("2");
stack.push("3");
while (stack.peek() != null){
System.out.println(stack.pop());
}
//利用Deque实现栈(ArrayDeque)
Deque stack2 = new ArrayDeque();
stack2.push("1");
stack2.push("2");
stack2.push("3");
while (stack2.peek() != null){
System.out.println(stack2.pop());
}
************************************************************************************