gpt4 book ai didi

java - 在 Java 中合并队列

转载 作者:行者123 更新时间:2023-11-30 11:38:56 28 4
gpt4 key购买 nike

我有自己的 ArrayQueue 类,它有 enqueuedequeuepeek 等方法。我的 ArrayQmerge类扩展此类并包含:

    public void mergeQs(ArrayQmerge q){

}

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

例如。 queue1 = [1,2,3,4,11]queue2 = [5,6,7,8,9,10,12]。当调用 queue1.mergeQs(queue2) 时,它将创建 queue1 = [1,5,2,6,3,7,4,8,11,9,10,12]queue2 将保持 [5,6,7,8,9,10,12]

如果有意义的话,我希望 mergeQs 方法交织两个队列中的元素。我知道如何成功地将它们加在一起或使用将两个队列作为参数传递的方法,但在这种情况下我想使用上面的方法(只传递一个)......

最佳答案

这是你可以做的:

public static void main(String[] args) {
ArrayQmerge q1 = new ArrayQmerge();
q1.enqueue(1);
q1.enqueue(2);
q1.enqueue(3);
q1.enqueue(4);
q1.enqueue(11);
ArrayQmerge q2 = new ArrayQmerge();
q2.enqueue(5);
q2.enqueue(6);
q2.enqueue(7);
q2.enqueue(8);
q2.enqueue(9);
q2.enqueue(10);
q2.enqueue(12);
System.out.println(q1);
System.out.println(q2);
q1.mergeQs(q2);
System.out.println(q1);
System.out.println(q2);
}

static class ArrayQmerge{
private List<Integer> queue = new ArrayList<Integer>();

public void enqueue(int val){
queue.add(val);
}

public String toString(){
return queue.toString();
}

public void mergeQs(ArrayQmerge q){
List<Integer> mergedQ = new ArrayList<Integer>(this.queue.size() + q.queue.size());
for (int i = 0, j = 0; i < this.queue.size() || j < q.queue.size();){
if (i < this.queue.size())
mergedQ.add(this.queue.get(i++));
if (j < q.queue.size())
mergedQ.add(q.queue.get(j++));
}
this.queue = mergedQ;
}
}

这是输出:

[1, 2, 3, 4, 11]
[5, 6, 7, 8, 9, 10, 12]
[1, 5, 2, 6, 3, 7, 4, 8, 11, 9, 10, 12]
[5, 6, 7, 8, 9, 10, 12]

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

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com