import java.util.LinkedList;
import java.util.Queue;
import java.util.ArrayList;
import java.util.List;
public class QueueMerger {
/**
* Merges multiple queues into a single queue, performing basic input validation.
*
* @param queues A list of queues to merge.
* @return A new queue containing all elements from the input queues, or null if
* input is invalid.
*/
public static <T> Queue<T> mergeQueues(List<Queue<T>> queues) {
if (queues == null) {
return null; // Handle null input
}
if (queues.isEmpty()) {
return new LinkedList<>(); // Return empty queue if input list is empty
}
Queue<T> mergedQueue = new LinkedList<>();
for (Queue<T> queue : queues) {
if (queue == null) {
continue; // Skip null queues
}
// Add elements from each queue to the merged queue
while (!queue.isEmpty()) {
mergedQueue.offer(queue.poll());
}
}
return mergedQueue;
}
public static void main(String[] args) {
//Example Usage
Queue<Integer> q1 = new LinkedList<>();
q1.offer(1);
q1.offer(2);
Queue<Integer> q2 = new LinkedList<>();
q2.offer(3);
q2.offer(4);
Queue<Integer> q3 = new LinkedList<>();
q3.offer(5);
List<Queue<Integer>> queues = new ArrayList<>();
queues.add(q1);
queues.add(q2);
queues.add(q3);
Queue<Integer> merged = mergeQueues(queues);
if (merged != null) {
System.out.println("Merged Queue: " + merged);
}
}
}
Add your comment