java - Java 中的合并队列

标签 java queue

我想知道编写将 ArrayQueue 与另一个队列合并的方法的最佳方法是什么,而不从传递的 q 中删除任何元素。

eg. queue1 = [1,2,3,4] and queue2 = [5,6,7,8,9,10].

当调用 queue1.mergeQs(queue2) 时,它将创建 queue1 = [1,5,2,6,3,7,4,8,9,10] code> 而 queue2 将保留 [5,6,7,8,9,10]

    public void mergeQs(ArrayQmerge q){}

这种方式似乎比传递两个队列并返回一个新的合并队列更难实现。谢谢。

为了澄清,我正在寻找一种方法来交错两个队列中的元素。

最佳答案

一个可能对您有帮助的细节是,私有(private)字段在 Java 中同一类的不同对象之间是可见的。这意味着,只要您只想合并自己类的队列,您的代码就可以完全访问所有内部字段,例如用于存储元素的数组。

对于最简单的情况,所有元素都存储在线性数组中,队列头位于索引零,这样的情况可能是一个开始:

public void mergeQs(ArrayQmerge q) {
    Object[] array = new Object[this.size() + q.size()];

    int i;
    int o;

    // Interleave elements
    for (i = 0, o = 0; i < this.size() && i < q.size(); ++i) {
        array[o++] = this.array[i];
        array[o++] = q.array[i];
    }

    // Copy the remaining elements
    while (i < this.size()) {
        array[o++] = this.array[i++];
    }

    while (i < q.size()) {
        array[o++] = q.array[i++];
    }

    this.array = array;
}

关于java - Java 中的合并队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13501660/

相关文章:

python - 我在 Django 应用程序中的哪里注册 rq-scheduler 作业?

android - 具有回调函数的网络请求,如何处理排队请求的结果

google-cloud-firestore - Firebase/Firestore 事务是否会创建内部队列?

java - hibernate/JPA : QueryException when hibernate generates metamodel for @ElementCollection

java - 在 Java 中的 JPanel 上移动图像

java - Java 字符串哈希码是否独立于语言环境?

java - Android Retrofit 参数化@Headers

java - 如何创建一个识别 AbsoluteLayout 的 jar 而不抛出 NoClassDefFoundError?

python - 在Python中,当队列不为空时从队列中读取数据并始终调用task_done的最干净的方法是什么?

python - 我的HelloWorld队列是否正常工作?