当前位置 : 主页 > 编程语言 > java >

java 队列 固定长度

来源:互联网 收集:自由互联 发布时间:2023-10-10
实现Java队列固定长度 1. 整体流程 为了实现Java队列的固定长度,我们可以按照以下步骤进行操作: 创建一个具有固定长度的队列。 当队列已满时,新加入的元素会排除队列的头部元素

实现Java队列固定长度

1. 整体流程

为了实现Java队列的固定长度,我们可以按照以下步骤进行操作:

  1. 创建一个具有固定长度的队列。
  2. 当队列已满时,新加入的元素会排除队列的头部元素。
  3. 当队列未满时,新加入的元素会被添加到队列的尾部。

下面是整个实现过程的流程图:

journey
    title 实现Java队列固定长度
    section 创建队列
    创建队列 --> 队列初始化
    section 添加元素
    队列初始化 --> 判断队列是否已满
    判断队列是否已满 --> 队列未满
    队列未满 --> 添加元素至队列尾部
    判断队列是否已满 --> 队列已满
    队列已满 --> 删除队列头部元素
    删除队列头部元素 --> 添加元素至队列尾部

2. 具体步骤及代码实现

2.1 创建队列

首先,我们需要创建一个具有固定长度的队列。可以使用Java集合框架提供的ArrayDeque类来实现一个队列(FIFO)数据结构。

import java.util.ArrayDeque;
import java.util.Queue;

public class FixedLengthQueue<T> {
    private final Queue<T> queue;
    private final int maxLength;

    public FixedLengthQueue(int maxLength) {
        this.queue = new ArrayDeque<>();
        this.maxLength = maxLength;
    }
}

在上述代码中,我们使用了ArrayDeque作为底层实现的队列,并使用泛型<T>表示队列中的元素类型。构造函数FixedLengthQueue(int maxLength)接受一个参数maxLength,表示队列的最大长度。

2.2 添加元素

当队列未满时,我们可以直接将新的元素添加到队列的尾部。如果队列已满,则需要先删除队列的头部元素,再将新的元素添加到队列尾部。

public void add(T element) {
    if (queue.size() >= maxLength) {
        queue.poll(); // 删除队列头部元素
    }
    queue.offer(element); // 添加元素至队列尾部
}

上述代码中,我们使用了queue.size()方法来判断队列是否已满。如果队列的当前长度大于等于最大长度,则调用queue.poll()方法删除队列的头部元素。然后,我们使用queue.offer(element)方法将新的元素添加到队列的尾部。

2.3 完整代码

下面是完整的Java代码实现:

import java.util.ArrayDeque;
import java.util.Queue;

public class FixedLengthQueue<T> {
    private final Queue<T> queue;
    private final int maxLength;

    public FixedLengthQueue(int maxLength) {
        this.queue = new ArrayDeque<>();
        this.maxLength = maxLength;
    }

    public void add(T element) {
        if (queue.size() >= maxLength) {
            queue.poll(); // 删除队列头部元素
        }
        queue.offer(element); // 添加元素至队列尾部
    }
}

3. 测试示例

我们可以编写一些测试代码来验证我们的队列是否能够正确地实现固定长度的功能。

public class Main {
    public static void main(String[] args) {
        FixedLengthQueue<Integer> queue = new FixedLengthQueue<>(3); // 创建长度为3的队列

        queue.add(1);
        queue.add(2);
        queue.add(3);
        System.out.println(queue); // 输出:[1, 2, 3]

        queue.add(4);
        System.out.println(queue); // 输出:[2, 3, 4]

        queue.add(5);
        System.out.println(queue); // 输出:[3, 4, 5]
    }
}

在上述测试代码中,我们首先创建了一个长度为3的队列,并依次添加了1、2、3三个元素。当再次添加元素4时,队列已满,会删除头部元素1,然后将元素4添加到队列尾部。最后,再次添加元素5时,队列已满,会删除头部元素2,然后将元素5添加到队列尾部

【本文由:湖北阿里云代理 http://www.558idc.com/aliyun.html提供,感恩】
上一篇:java 断点下载测试地址
下一篇:没有了
网友评论