java队列与栈

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

LinkedList是Queue接口的实现类

boolean add(E e): 将指定的元素插入此队列(如果立即可行且不会违反容量限制),在成
功时返回true,如果当前没有可用的空间,则抛出llegalStateException.
E element() : 获取,但是不移除此队列的头。
boolean offer(E e): 将指定的元素插入此队列(如果立即可行且不会违反容量限制),当使用有容量限制的队列时,此方法通常要优于add(E),后者可能无法插入元素,而只是抛出一个异常。
E peek(): 获取但不移除此队列的头;如果此队列为空,则返回null.
E poll(): 获取并移除此队列的头,如果此队列为空,则返回null.
E remove(): 获取并移除此队列的头。

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

栈Stack
Stack 类表示后进先出(LIFO)的对象堆栈。它通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈。它提供了通常的 push 和 pop 操作,以及取堆栈顶点的 peek 方法、测试堆栈是否为空的 empty 方法、在堆栈中查找项并确定到堆栈顶距离的 search 方法。

代码综合示例:

package com.booy;

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

public class QueueDequeDemo {
	public static void main(String[] args) {
		queue();
		deque();
		stack();
	}
	public static void queue(){
		Queue<String> q = new LinkedList<>();
		q.add("Tom");
		q.add("Lily");
		q.add("Bin");
		q.add("Lindy");
		q.add("Billy");
		q.add("Billy");
		System.out.println("---------------Queue------------");		
		//获取但不移除此队列的头;如果此队列为空,则返回null
		System.out.println(q.peek());
		System.out.println(q.size());
		//获取并移除此队列的头,如果此队列为空,则返回null.
		System.out.println(q.poll());
		System.out.println(q.size());
	}
	public static void deque(){
			Deque<String> d = new LinkedList<>();
			d.add("Tom");
			d.add("Lily");
			d.add("Bin");
			d.add("Lindy");
			d.add("Billy");
			d.add("Billy");
			System.out.println("---------------Deque------------");
			//检索并删除第一个元素
			System.out.println(d.pollFirst());
			//检索不删除第一个元素
			System.out.println(d.getFirst());
			System.out.println(d.getLast());
			
	}
	public static void stack(){
		Stack<String> s =new Stack<>();
		s.push("Tom");
		s.push("Lily");
		s.push("Bin");
		System.out.println("---------------Stack------------");
		//删除此堆栈顶部的对象,并将该对象作为此函数的值返回
		System.out.println(s.pop());
		//查看此堆栈顶部的对象,而不从堆栈中删除它
		System.out.println(s.peek());
		System.out.println(s.pop());
		System.out.println(s.pop());
	}
}
/**
运行结果:
---------------Queue------------
Tom
6
Tom
5
---------------Deque------------
Tom
Lily
Billy
---------------Stack------------
Bin
Lily
Lily
Tom
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值