《Java数据结构与算法:提升代码效率的关键-队列篇》

一、队列的基本概念

队列是一种重要的线性数据结构,遵循先进先出(FIFO, First In First Out)原则。下面详细介绍Java中队列的实现和使用方法。

1. 队列的特性

  • 先进先出:最先入队的元素最先出队

  • 基本操作

    • enqueue/offer:元素入队

    • dequeue/poll:元素出队

    • peek:查看队首元素但不移除

  • 限制访问:只能访问队首和队尾元素

2. 常见应用场景

  • 任务调度系统

  • 消息队列

  • 广度优先搜索(BFS)

  • 打印机任务队列

  • 线程池任务管理

二、Java中的Queue接口

Java集合框架提供了Queue接口及其多种实现:

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

public class Main {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();
        
        // 入队操作
        queue.offer("A");
        queue.offer("B");
        queue.offer("C");
        
        // 查看队首元素
        System.out.println("队首元素: " + queue.peek()); // 输出A
        
        // 出队操作
        System.out.println("出队: " + queue.poll()); // 输出A
        System.out.println("出队: " + queue.poll()); // 输出B
        
        // 判断队列是否为空
        System.out.println("队列是否为空: " + queue.isEmpty()); // 输出false
        
        // 获取队列大小
        System.out.println("队列大小: " + queue.size()); // 输出1
    }
}

三、Queue的主要实现类

1. LinkedList

  • 双向链表实现

  • 可用作队列和双端队列(Deque)

  • 允许null元素

Queue<Integer> queue = new LinkedList<>();

2. PriorityQueue

  • 基于优先级堆的无界优先级队列

  • 元素按自然顺序或Comparator排序

  • 不允许null元素

// 自然顺序
Queue<Integer> pq = new PriorityQueue<>();

// 自定义顺序
Queue<Integer> pq = new PriorityQueue<>(Comparator.reverseOrder());

3. ArrayDeque

  • 基于可调整大小的数组实现

  • 比LinkedList更高效

  • 不允许null元素

Queue<String> queue = new ArrayDeque<>();
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

博哥爱学习

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

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

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

打赏作者

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

抵扣说明:

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

余额充值