import java.util.Deque;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
public class queueDemo {
public static void main(String[] args) {
// queueDemo();
// dequeDemo();
stackDemo();
}
/**
* 队列(Queue) 是一种特殊的线性表,是-种先进先出(FIFO) 的数据结构。它只允许在表的前端(front) 进行删除操作,而在表的后端(rear) 进行插入操作。
* 进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
*
* 请求队列,消息队列,任务队列...
*
* LinkedList是Queue接口的实现类
*
* boolean add(Ee):将指定的元素插入此队列(如果立即可行且不会违反容量限制),在成功时返回true,如果当前没有可用的空间,则抛出IllegalStateException。
* E element():获取,但是不移除此队列的头.集合为空抛异常
*
* boolean add(Ee):增加一个队列头.集合为空抛异常
* boolean offer(Ee):将指定的元素插入此队列(如果立即可行且不会违反容量限制),当使用有容量限制的队列时,此方法通常要优于add(E),后者可能无法插入元素,而只是抛出一个异常。
*
* E peek():获取但不移除此队列的头;如果此队列为空,则返回null.
* E poll():获取并移除此队列的头,如果此队列为空,则返回null.
* E remove():获取并移除此队列的头,集合为空抛异常
*/
public static void queueDemo(){
Queue<String> queue = new LinkedList<>();
queue.add("1");
queue.add("2");
queue.add("3");
queue.add("4");
queue.add("5");
queue.offer("插班生");
System.out.println(queue);
System.out.println(queue.remove());
//peek()取队列的第一个值,poll删除队列的第一个值
System.out.println("peek前长度:"+queue.size());
System.out.println("队列的第一个位置的值(peek):"+queue.peek());
System.out.println("peek后长度:"+queue.size());
System.out.println("队列的第一个位置的值(poll):"+queue.poll());
System.out.println("poll后长度:"+queue.size());
}
/**
* Deque:一个线性collection,支持在两端插入和移除元素。(双端队列)
* 此接口既支持有容量限制的双端队列,也支持没有固定大小限制的双端队列。
* 接口定义在双端队列两端访问元素的方法。提供插入、移除和检查元素的方法。
*
* 双端皆可操作
*/
public static void dequeDemo(){
Deque<String> deque = new LinkedList<>();
deque.add("前端第一个");
deque.add("中间值");
deque.add("后端第一个");
System.out.println(deque.getFirst());//第一个位置
System.out.println(deque.getLast());//最后一个位置
}
/**
* Stack:栈,先进的后出
* 更多方法看API文档...
*/
public static void stackDemo(){
Stack<String> stack = new Stack<>();
stack.push("栈底");
stack.push("中间值");
stack.push("栈顶");
System.out.println(stack.peek());//取栈顶值
System.out.println(stack.pop());//移除栈顶
}
}
铂西学习日记---队列与栈
最新推荐文章于 2024-03-24 23:57:30 发布