Lors de la création de 2 Queues comme ceci:Java multidisque Queues
ArrayQueue q1 = new ArrayQueue();
ArrayQueue q2 = new ArrayQueue();
for (int i = 0; i < 5; i++) {
q1.enqueue(new Integer(i));
}
for (int i = 5; i < 10; i++) {
q2.enqueue(new Integer(i));
}
System.out.println("q1: " + q1);
System.out.println("q2: " + q2);
Il produit: q1: 4,3,2,1,0
et q2: 9,8,7,6,5
.
J'ai besoin d'une méthode qui fusionne la file d'attente q2
dans la file d'attente q1
avec des éléments entrelacés. Donc, si println
'd encore sortirait: q1: 0,5,1,6,2,7,3,8,4,9
et q2: 9,8,7,6,5
.
Ma classe contient toutes les méthodes appropriées enqueue
, dequeue
, peek
, isEmpty
, size
, doubleSize
... mon nom de la méthode est la suivante:
public void mergedQs(ArrayQueue q) {
}
Fondamentalement, je veux ajouter des objets à deux files d'attente, puis fusion la deuxième file d'attente dans le premier (pas seulement les ajouter). Idéalement je veux éviter de les lancer ou d'utiliser une ArrayList car je veux qu'ils restent des files d'attente.
Je vous suggère d'utiliser le ConcurrentLikedDeque. Voici l'API pour cela [ConcurrentLinkedDeque] (http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentLinkedDeque.html). Si vous avez déjà une classe avec des méthodes comme enqueue, dequeue etc, vous pouvez envelopper le ConcurrentLinkedDeque dans votre classe et l'utiliser comme structure de données principale pour stocker nos objets. – nikkatsa