0
点赞
收藏
分享

微信扫一扫

铂西学习日记---队列与栈

AbrahamW 2022-02-12 阅读 59
java
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());//移除栈顶
    }
}
举报

相关推荐

0 条评论