8、Queue、Deque接口

8、Queue、Deque接口

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

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

import java.util.LinkedList;
import java.util.Queue;

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

public class QueueDequeDemo {

	public static void main(String[] args) {

			Queue<String> queue=new LinkedList<>();
			queue.add("小花");
			queue.add("小黑");
			queue.add("小红");
			queue.add("小白");
			queue.add("李华");
			
			//peek() 检索但不删除此队列的头,如果此队列为空,则返回 null 。
			//poll() 检索并删除此队列的头,如果此队列为空,则返回 null 。
			System.out.println(queue.size());
			System.out.println(queue.poll());
			System.out.println(queue.size());
			System.out.println(queue.poll());
			System.out.println(queue.size());
			System.out.println(queue.peek());
			System.out.println(queue.size());
	}

}
//输出
5
小花
4
小黑
3
小红
3

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

	private static void deque() {
		Deque<String> queue=new LinkedList<>();
		queue.add("小花");
		queue.add("小黑");
		queue.add("小红");
		queue.add("小白");
		queue.add("李华");
		System.out.println(queue.getFirst());
		System.out.println(queue.getLast());
	
	}

Stack类代表最先进先出(LIFO)堆栈的对象。 它扩展了类别Vector与五个操作,允许一个向量被视为堆栈。 设置在通常的push和pop操作,以及作为一种方法来peek在堆栈,以测试堆栈是否为empty的方法,以及向search在栈中的项目的方法在顶部项目和发现多远它是从顶部。
Deque接口及其实现提供了更完整和一致的LIFO堆栈操作集,这些接口应优先于此类。 例如:

Deque stack = new ArrayDeque();

private static void stack() {
		Stack<String> s=new Stack<>();
		s.add("小花");
		s.add("小黑");
		s.add("小红");
		s.add("小白");
		s.add("李华");
		
		/*
		peek() 
		查看此堆栈顶部的对象,而不从堆栈中删除它。  
	    pop() 
		删除此堆栈顶部的对象,并将该对象作为此函数的值返回。  
		push(E item) 
		将项目推送到此堆栈的顶部。  
		search(Object o) 
		返回一个对象在此堆栈上的基于1的位置。 
		 */
		System.out.println(s.peek());
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值