java - 当队列已满时增加数组大小的入队方法

标签 java insert queue

目前我正在使用队列,并且一直在编写一种将元素添加到队列中的入队方法。每当队列已满时,我都会返回一条消息,指出队列无法插入更多元素。现在我的任务是更改入队方法,每当尝试插入元素时,将数组大小限制加倍,以便理论上该项目将被添加到新的扩展数组中,并且永远不会失败到完整队列中。我怎样才能实现这一目标,任何事情都有帮助。

代码

public void enqueue(Object newItem){
    if (!isFull()){
        back = (back+1) % QUEUE_SIZE;
        items[back] = newItem;
        count++;
        return;
    } else
        System.out.println("Trying to enqueue into full queue");
}

最佳答案

您可以创建一个大小为 items 双倍的新数组,然后从 items 复制所有项目并再次调用您的 enqueue 方法.

public void enqueue(Object newItem){
    if (!isFull()){
         ...
    } else {
        Object[] newItems = new Object[items.length * 2];
        copyFromTo(items, newItems);
        items = newItems;
        enqueue(newItem);
    }
}

关于java - 当队列已满时增加数组大小的入队方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43421630/

相关文章:

Java:嵌套类可以解决这个问题吗?

mysql - 触发 MySQL 不工作

mysql - 由于错误代码 1054,无法插入记录

javascript - 如何在网络浏览器中列出数千/大表情符号列表而不卡住浏览器?

java - 在 Java 中避免超时/饥饿的常见做法?

java - 无法在Android 6.0上加载vlcjni库

java - 父线程在它们退出 servlet 容器之前是否等待子线程退出?

sqlite - 如何将新表行插入现有表的每隔一行?

c++ - OpenMP 中 std::queue 可以并发插入吗?

java复杂逻辑条件解析器