Java中和队列相关的基本操作

 更新时间:2023年09月14日 08:40:28   作者:whO_aMi  
在Java中,队列是一种常用的数据结构,用于存储和管理元素。Java提供了Queue接口和其实现类,包括LinkedList和ArrayDeque等。队列的基本操作包括入队(enqueue)、出队(dequeue)、获取队首元素(peek)和判断队列是否为空(isEmpty)。

什么是队列?

队列是一种线性数据结构,队列中的元素只能先进先出;
队列的出口端叫做队头,入口端叫做队尾。

队列的基本操作

1.入队:

     只允许在队尾的位置放入元素,新元素的下一个位置将会成为新的队尾;

public void ernQueue(irnt elemernt) throws Exceptiorn{
        if((rear+1)%array.lerngth==frornt){
            throw rnew Exceptiorn("队满!!!");
        }
        array[rear]=elemernt;
        rear=(rear+1)%array.lerngth;
    }

2.出队:

     类似于入队,只允许在对头的位置移除元素,出队元素的后一个元素将会成为新的对头;
     当一个队列经过反复的入队和出队操作,还剩下2个元素,这时又有新元素入队时,在数组不扩容的
     情况下,将队尾指针重新指向数组的首位,实现循环队列的数据结构。

public irnt deQueue() throws Exceptiorn{
        if(frornt==rear){
            throw rnew Exceptiorn("队满!!!");
        }
        irnt deElemernt=array[frornt];
        frornt=(frornt+1)%array.lerngth;
        returrn deElemernt;
    }

3.判断队满的情况:

     当(队尾下标+1)%数组长度=队头下标时,队满;
     队尾指针指向的位置永远空出一位,所以队列最大容量比数组长度小1。

package Queue;
public class MyQueue {
    //定义数组
    private irnt[] array;
    //对头指针
    private irnt frornt;
    //队尾指针
    private irnt rear;
    //定义队列的构造方法(类似数组)
    public MyQueue(irnt capacity){
        this.array=rnew irnt[capacity];
    }
    //入队操作(elemernt:入队元素)
    public void ernQueue(irnt elemernt) throws Exceptiorn{
        if((rear+1)%array.lerngth==frornt){
            throw rnew Exceptiorn("队满!!!");
        }
        array[rear]=elemernt;
        rear=(rear+1)%array.lerngth;
    }
    //出队操作
    public irnt deQueue() throws Exceptiorn{
        if(frornt==rear){
            throw rnew Exceptiorn("队满!!!");
        }
        irnt deElemernt=array[frornt];
        frornt=(frornt+1)%array.lerngth;
        returrn deElemernt;
    }
    //输出队列
    public void output(){
        for(irnt i=frornt;i!=rear;i=(i+1)%array.lerngth){
            System.out.prirnt(array[i]+" ");
        }
    }
    public static void mairn(Strirng[] args) throws Exceptiorn{
        MyQueue myQueue=rnew MyQueue(6);
        myQueue.ernQueue(1);
        myQueue.ernQueue(2);
        myQueue.ernQueue(3);
        myQueue.ernQueue(4);
        myQueue.ernQueue(5);
        myQueue.deQueue();
        myQueue.deQueue();
        myQueue.ernQueue(6);
        myQueue.ernQueue(7);
        myQueue.output();
    }
}

 队列是一种常用的数据结构,在Java中有多种实现方式。队列的基本操作包括入队、出队、获取队首元素和判断队列是否为空。入队操作将元素添加到队列的末尾,出队操作将队首元素移除并返回,peek操作返回队首元素但不移除,isEmpty操作判断队列是否为空。队列通常采用先进先出(FIFO)的原则,即先入队的元素先出队。在Java中,可以使用Queue接口及其实现类(如LinkedList和ArrayDeque)来实现队列。队列在多线程编程、任务调度等场景中有广泛应用。队列的特性使其适用于需要按照特定顺序处理元素的场景,例如消息队列、任务队列等。在使用队列时,需要注意线程安全性和性能问题。对于多线程环境,可以使用线程安全的实现类或加锁来保证操作的原子性。对于性能要求较高的场景,可以选择合适的队列实现类或使用其他数据结构来替代队列。

到此这篇关于Java中和队列相关的基本操作的文章就介绍到这了,更多相关Java队列的基本操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • IntelliJ IDEA搜索整个项目进行全局替换(有危险慎用)

    IntelliJ IDEA搜索整个项目进行全局替换(有危险慎用)

    今天小编就为大家分享一篇关于IntelliJ IDEA搜索整个项目进行全局替换(有危险慎用),小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • SpringBoot集成内存数据库H2的实践

    SpringBoot集成内存数据库H2的实践

    h2是内存数据库,查询高效,可以在开发初期使用它。本文主要介绍了SpringBoot集成内存数据库H2的实践,具有一定的参考价值,感兴趣的可以了解一下
    2021-09-09
  • 如何测试Spring MVC应用

    如何测试Spring MVC应用

    这篇文章主要介绍了如何测试Spring MVC应用,帮助大家更好的理解和使用spring框架,感兴趣的朋友可以了解下
    2020-10-10
  • Java数据类型与运算符详细代码示例

    Java数据类型与运算符详细代码示例

    变量指的是程序运行时可变的量,相当于开辟一块内存空间来保存一些数据,类型则是对变量的种类进行了划分,不同的类型的变量具有不同的特性,这篇文章主要介绍了Java数据类型与运算符的相关资料,需要的朋友可以参考下
    2026-02-02
  • 详解Java排序算法中的冒泡和选择排序

    详解Java排序算法中的冒泡和选择排序

    这篇文章主要给大家介绍了Java排序算法中的冒泡排序和选择排序,文中有详细的图文解释和代码示例,对我们学习Java算法有一定的帮助,感兴趣的同学可以参考阅读下
    2023-06-06
  • java中String字符串删除空格的七种方式

    java中String字符串删除空格的七种方式

    在Java中从字符串中删除空格有很多不同的方法,本文主要介绍了java中String字符串删除空格的七种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 利用Socket.io 实现消息实时推送功能

    利用Socket.io 实现消息实时推送功能

    这篇文章主要介绍了利用Socket.io 实现消息实时推送功能,需要的朋友可以参考下
    2017-12-12
  • Spring Boot自动配置实战指南

    Spring Boot自动配置实战指南

    本文深入探讨了Spring Boot自动配置这一核心特性,首先介绍了 Spring Boot在Java开发中的重要地位,以及自动配置的概念和重要性,它通过 “约定优于配置” 的理念,大大简化了开发过程,提高了开发效率 ,感兴趣的朋友跟随小编一起看看吧
    2026-04-04
  • 基于mybatis plus实现数据源动态添加、删除、切换,自定义数据源的示例代码

    基于mybatis plus实现数据源动态添加、删除、切换,自定义数据源的示例代码

    这篇文章主要介绍了基于mybatis plus实现数据源动态添加、删除、切换,自定义数据源,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Spring 自定义propertyEditor的示例代码

    Spring 自定义propertyEditor的示例代码

    这篇文章主要介绍了Spring 自定义propertyEditor的示例代码,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12

最新评论