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组件化开发可以通过以下几种方式实现:1. 使用模块化工具:可以使用像Maven、Gradle等构建工具来管理Java项目的依赖关系。通过在项目的pom.xml或build.gradl...

  • java按字节读取数据的方法是什么

    Java中按字节读取数据的方法是使用InputStream类的read()方法。该方法会读取输入流的下一个字节,并返回一个整数值表示读取的字节。如果已经达到了输入流的末尾,...

  • java多线程怎么按顺序打印

    在Java中,可以使用多种方法按顺序打印多个线程。 使用join()方法:在每个线程的末尾调用前一个线程的join()方法,确保前一个线程执行完毕后再执行下一个线程。例...

  • java怎么判断栈是否为空

    在Java中,可以使用isEmpty()方法来判断栈是否为空。具体代码如下:
    Stack stack = new Stack(); // 判断栈是否为空
    if(stack.isEmpty()){ System.out...

  • 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码...