队列与栈

队列(Queue)是一种特殊的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操作。而在表的后端(rear)进行插入操作。
进行插入操作的端称为队尾,进行删除操作的端称为对头。队列中没有元素时,称为空队列。

LinkedList是Queue接口的实现类
boolean add(E e):将指定的元素插入此队列,在成功是返回true,如果当前没有可用的空间,则抛出IllegalStateException
E element():获取,但是不移除次队列的头。
boolean offer(E e):将指定的元素插入此队列,当使用有容量限制的队列时,此方法通常优于add(),add()方法可能无法插入元素而只是抛出一个异常
E peek():获取但不移除此队列的头,如果此队列为空,则返回null
E poll():获取并移除此队列的头,如果此队列为空,则返回null
E remover():获取并移除此队列的头


Deque:
一个线性collection,支持在两端插入和移除元素。
此接口既支持有容量的双端队列,也支持没有固定大小限制的双端队列。
接口定义在双端队列两端访问元素的方法。提供插入、移除和检查元素的方法



Stack 堆栈工具类

package com.vince;

import java.util.Deque;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

/**
Queue接口:队列
是一种先进先出的线性数据结构(排队)
LinkedList类实现了Queue接口 
比如:请求队列、消息队列


Deque接口:双端队列
是一种先进先出的线性数据结构


Stack:堆栈
先进后出的线性数据结构

*/


public class QueueDequeDemo {
    public static void main(String[] args) {
        //queue();
        //deque();
        stack();
    }
    
    //Queue接口
    private static void queue() {
        Queue queue = new LinkedList<>();
        queue.add("jack");
        queue.add("tom");
        queue.add("lily");
        queue.add("jerry");
        
        System.out.println(queue.size());
        System.out.println(queue.peek()); //获取但不移除此队列的头
        System.out.println(queue.size());
        System.out.println(queue.poll()); //获取并移除此队列的头
        System.out.println(queue.size());
    }
    
    
    //Deque接口
    private static void deque() {
        Deque deque = new LinkedList<>();
        deque.add("jack");
        deque.add("tom");
        deque.add("lily");
        deque.add("jerry");
        
        System.out.println(deque.getFirst());//获取但不移除此队列的头
        System.out.println(deque.getLast()); //获取但不移除此队列的尾
        
        //Deque接口也可以创建Stack对象
        //Deque stack = new ArrayDeque(); 
    }
    
    //Stack 工具类
    private static void stack() {
        Stack s = new Stack();
        s.push("jack");
        s.push("tom");
        s.push("jerry");
        
        System.out.println(s.peek()); //查看此堆栈顶部的对象,而不从堆栈中删除它。
        System.out.println(s.pop());  //删除此堆栈顶部的对象,并将该对象作为此函数的值返回。
    }

    

}

你可能感兴趣的:(队列与栈)