Java的队列和优先队列Queue、Deque、PriorityQueue

这篇博客介绍了Java中Queue、Deque和PriorityQueue的概念及用法。Queue接口包含offer、poll等方法,Deque支持双端操作如addFirst和removeFirst。LinkedList作为Deque实现,适合队列操作。PriorityQueue是一个按优先级排序的队列,可自定义排序规则。文章通过实例展示了如何创建和使用这些队列。
摘要由CSDN通过智能技术生成

Queue接口继承自java.util.Collection,Deque接口继承自Queue接口。LinkedList类实现了Deque接口。

Queue接口中有如下方法:

+offer(element:E):boolean    插入一个元素到队列中

+poll():E  获取并移除队列的头元素,如果队列为空则返回null

+remove():E  获取并移除队列头元素,如果队列为空则抛出异常

+peek():E  获取但不移除队列的头元素,空返回null;

+element():E  获取但不移除队列的头元素,空则抛出异常。

Deque(double -ended queue)双端队列支持在两端插入和移除元素,方法addFirst(e)、removeFirst()、addLast(e)、removeLast()、getFirst()、getLast().

可以使用LinkedList创建一个队列,它可以有效的在线性表两端插入和删除元素,因此LinkedList很适合进行队列操作。

package test;

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

public class project1 {
	public static void main(String []args) {
      Queue<String> queue=new LinkedList<>();
      queue.offer("hello");
      queue.offer("world");
      queue.offer("java");
      while(queue.size()>0) {
    	  System.out.println(queue.remo
Java中的QueueDeque是两种不同的数据结构。 1. Queue(单向队列)是一种FIFO(先进先出)的数据结构,它继承自Collection接口。Queue有一个直接子类PriorityQueue,它是一个基于优先级的队列,元素按照优先级进行排序Queue的常用方法包括add()、offer()、remove()、poll()、element()和peek()等。 2. Deque(双向队列)是一种支持在两端添加或移除元素的数据结构,它继承自Queue接口。Deque有两个直接子类:LinkedList和ArrayDeque。LinkedList是基于链表实现的双向队列,而ArrayDeque是基于数组实现的双向队列Deque的常用方法包括addFirst()、addLast()、offerFirst()、offerLast()、removeFirst()、removeLast()、pollFirst()、pollLast()、getFirst()、getLast()、peekFirst()和peekLast()等。 以下是Java中使用QueueDeque的示例代码: ```java import java.util.Queue; import java.util.LinkedList; import java.util.ArrayDeque; public class QueueDequeExample { public static void main(String[] args) { // 使用Queue Queue<String> queue = new LinkedList<>(); queue.add("apple"); queue.add("banana"); queue.add("orange"); System.out.println("Queue: " + queue); System.out.println("First element: " + queue.peek()); System.out.println("Removed element: " + queue.poll()); System.out.println("Queue after removal: " + queue); // 使用Deque Deque<Integer> deque = new ArrayDeque<>(); deque.addFirst(1); deque.addLast(2); deque.addLast(3); System.out.println("Deque: " + deque); System.out.println("First element: " + deque.getFirst()); System.out.println("Last element: " + deque.getLast()); System.out.println("Removed first element: " + deque.removeFirst()); System.out.println("Deque after removal: " + deque); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值