117.info
人生若只如初见

java固定长度队列怎么实现

在Java中,可以使用数组和循环来实现固定长度的队列。下面是一个简单的示例代码:

public class FixedSizeQueue {
    private int[] queue;
    private int front;
    private int rear;
    private int size;
    private int capacity;

    public FixedSizeQueue(int capacity) {
        this.capacity = capacity;
        queue = new int[capacity];
        front = 0;
        rear = -1;
        size = 0;
    }

    public void enqueue(int item) {
        if (isFull()) {
            throw new RuntimeException("Queue is full");
        }
        rear = (rear + 1) % capacity;
        queue[rear] = item;
        size++;
    }

    public int dequeue() {
        if (isEmpty()) {
            throw new RuntimeException("Queue is empty");
        }
        int item = queue[front];
        front = (front + 1) % capacity;
        size--;
        return item;
    }

    public boolean isEmpty() {
        return size == 0;
    }

    public boolean isFull() {
        return size == capacity;
    }

    public int getSize() {
        return size;
    }
}

在这个示例中,我们使用一个数组来表示队列,使用两个指针frontrear来记录队列的前端和后端位置,使用一个变量size来记录队列中的元素数量,使用一个变量capacity来记录队列的最大容量。

enqueue()方法用于向队列中添加元素,首先检查队列是否已满,如果已满则抛出异常,否则将rear指针向后移动一个位置,并将元素添加到新位置上。

dequeue()方法用于从队列中删除元素,首先检查队列是否为空,如果为空则抛出异常,否则将front指针向后移动一个位置,并返回原先front指针位置上的元素。

isEmpty()方法用于检查队列是否为空,如果队列中元素数量为0,则返回true,否则返回false。

isFull()方法用于检查队列是否已满,如果队列中元素数量等于最大容量,则返回true,否则返回false。

getSize()方法用于获取队列中的元素数量。

使用示例:

FixedSizeQueue queue = new FixedSizeQueue(5);
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.enqueue(4);
queue.enqueue(5);

System.out.println(queue.getSize()); // 输出:5

System.out.println(queue.dequeue()); // 输出:1
System.out.println(queue.dequeue()); // 输出:2

queue.enqueue(6);
queue.enqueue(7);

System.out.println(queue.getSize()); // 输出:5
System.out.println(queue.isFull()); // 输出:true

这段示例代码演示了如何使用FixedSizeQueue类来创建一个固定长度为5的队列,并对队列进行操作。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fefa3AzsLAgBQBFI.html

推荐文章

  • java中异常类会影响性能吗

    在Java中,异常类本身不会对性能产生显著影响。异常处理机制是为了在程序运行时处理错误或异常情况,而不是为了优化性能。然而,在使用异常时,需要注意以下几点...

  • java中异常类如何避免

    在Java中,避免异常的最好方法是编写健壮的代码并遵循一些最佳实践。以下是一些建议: 预期和处理异常:使用try-catch语句来捕获和处理可能发生的异常。确保处理...

  • java中异常类有哪些常见类型

    Java中的异常类主要分为两大类:受检异常(Checked Exceptions)和非受检异常(Unchecked Exceptions)。以下是具体的异常类型:
    受检异常(Checked Except...

  • java中异常类怎么捕获

    在Java中,我们使用try-catch语句来捕获异常。当程序执行过程中遇到异常时,Java运行时系统会抛出一个异常对象。你可以使用try块来包含可能引发异常的代码,然后...

  • qt元对象系统概念是什么

    Qt元对象系统(Meta-Object System)是Qt框架中的一个关键概念,它提供了在运行时对对象进行反射和元数据操作的机制。它允许开发者在不了解对象实际类型的情况下...

  • ios动态库和静态库有什么区别

    iOS中的动态库和静态库有以下区别: 链接方式:静态库在编译时被链接到应用程序中,而动态库在运行时被动态链接到应用程序中。 文件大小:静态库将所有的代码和数...

  • linux第三方SDK库冲突怎么解决

    解决 Linux 第三方 SDK 库冲突的方法如下: 更新 SDK 版本:尝试升级冲突的 SDK 版本到最新版本,可能已经修复了冲突问题。 重新编译库:使用正确的编译选项重新...

  • C语言char变量赋值的方法是什么

    在C语言中,可以使用以下几种方法给char变量赋值: 直接赋值:通过使用单引号将字符常量赋给char变量。例如: char c = 'a'; 这将把字符’a’赋给变量c。 ASCII码...