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队列的基本操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java 超详细讲解十大排序算法面试无忧

    Java 超详细讲解十大排序算法面试无忧

    这篇文章主要介绍了Java常用的排序算法及代码实现,在Java开发中,对排序的应用需要熟练的掌握,这样才能够确保Java学习时候能够有扎实的基础能力。那Java有哪些排序算法呢?本文小编就来详细说说Java常见的排序算法,需要的朋友可以参考一下
    2022-04-04
  • SpringBoot创建动态定时任务的几种方式小结

    SpringBoot创建动态定时任务的几种方式小结

    SpringBoot提供了多种实现定时任务的方式,包括使用@Scheduled注解、SchedulingConfigurer接口、TaskScheduler接口和Quartz框架,@Scheduled适合简单的定时任务,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2024-10-10
  • Java CGLib动态代理机制(全面解析)

    Java CGLib动态代理机制(全面解析)

    下面小编就为大家带来一篇Java CGLib动态代理机制(全面解析)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • 详解Spring Cloud负载均衡重要组件Ribbon中重要类的用法

    详解Spring Cloud负载均衡重要组件Ribbon中重要类的用法

    本篇文章主要介绍了详解Spring Cloud负载均衡重要组件Ribbon中重要类的用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • java JSON解析库Alibaba Fastjson用法详解

    java JSON解析库Alibaba Fastjson用法详解

    这篇文章主要介绍了java JSON解析库Alibaba Fastjson用法,结合实例形式详细分析了java JSON解析库Alibaba Fastjson的基本功能、原理、用法及操作注意事项,需要的朋友可以参考下
    2020-04-04
  • JSON.toJSONString()空字段不忽略修改的问题

    JSON.toJSONString()空字段不忽略修改的问题

    这篇文章主要介绍了JSON.toJSONString()空字段不忽略修改的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Servlet3.0实现文件上传的方法

    Servlet3.0实现文件上传的方法

    本篇文章主要介绍了Servlet实现文件上传的方法,所谓文件上传就是将本地的文件发送到服务器中保存。有兴趣的可以了解一下。
    2017-03-03
  • Spring Security前后分离校验token的实现方法

    Spring Security前后分离校验token的实现方法

    这篇文章主要介绍了Spring Security前后分离校验token的方法,本次token生成采取jwt的方式,通过引入jwt依赖文件配置token管理器,对Spring Security校验token相关知识感兴趣的朋友一起看看吧
    2022-02-02
  • java 枚举类中的valueOf用法说明

    java 枚举类中的valueOf用法说明

    这篇文章主要介绍了java 枚举类中的valueOf用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • springboot集成tkmapper及基本使用教程

    springboot集成tkmapper及基本使用教程

    tk.mybatis可以节省程序员的大部分时间,对于程序员来说关于一张表的操作无非就是增删改查,tk.mybatis提供了一些基本操作的SQL语句,比如说按表的主键查询、删除等基本操作,我们接下来就来介绍一些springboot集成tkmapper及基本使用
    2022-11-11

最新评论