Java的集合实现了栈与队列,我们直接调用就可以实现功能,可是平时就见过Queue、Stack、Deque这些字眼,完全不知道怎么回事,下面就来梳理一下他们的关系,先来看类图(这里简化并只关联了所需要提到的类或接)
不推荐使用,推荐ArrayDeque
Queue接口不同之处在于同一个功能他有两套方法,两套方法区别于一套是实现返回值,另一套是抛出异常
Throw Exception | Return value | |
---|---|---|
增加 | add(e) | offer(e) |
删除 | remove() | poll() |
检查 | element() | peek() |
后面讲解基于抛出异常的方法
double ended queue,意思是双向队列,所以该接口多了操作方法,用于操作头尾,下面讲解部分方法,其余自行查看
方法 | 解释 |
---|---|
addFirst(E e) | 队头增加元素 |
addLast(E e) | 队尾增加元素 |
removeFirst() | 队头删除元素,并返回该元素 |
removeLast() | 队尾删除元素,并返回该元素 |
peekFirst() | 返回队头元素,不删除 |
peekLast() | 返回队尾元素,不删除 |
先进后出的结构,想象成羽毛球筒就行了,先放进去的羽毛球都是最后才能拿出来的
具体实现
public static void main(String[] args) {
LinkedList linkedList = new LinkedList();
linkedList.addFirst(1);
linkedList.addFirst(2);
linkedList.addFirst(3);
linkedList.addFirst(4);
linkedList.removeFirst();
//一定要用foreach方法,上篇有解释
for(Object i : linkedList){
System.out.println(i);
}
}
3
2
1
public static void main(String[] args) {
LinkedList linkedList = new LinkedList();
linkedList.addLast(1);
linkedList.addLast(2);
linkedList.addLast(3);
linkedList.addLast(4);
linkedList.removeFirst();
//一定要用foreach方法,上篇有解释
for(Object i : linkedList){
System.out.println(i);
}
}
2
3
4
栈
功能 | 方法 |
---|---|
进栈 | addFirst(e) |
出栈 | remoceFirst() |
取栈顶 | peekFirst() |
队列
功能 | 方法 |
---|---|
进队 | addLast(e) |
出队 | removeFirst() |
取队首 | peekFirst() |