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

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小狗铂西

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值