1. import java.util.LinkedList;
  2. import java.util.Queue;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. public class QueueMerger {
  6. /**
  7. * Merges multiple queues into a single queue, performing basic input validation.
  8. *
  9. * @param queues A list of queues to merge.
  10. * @return A new queue containing all elements from the input queues, or null if
  11. * input is invalid.
  12. */
  13. public static <T> Queue<T> mergeQueues(List<Queue<T>> queues) {
  14. if (queues == null) {
  15. return null; // Handle null input
  16. }
  17. if (queues.isEmpty()) {
  18. return new LinkedList<>(); // Return empty queue if input list is empty
  19. }
  20. Queue<T> mergedQueue = new LinkedList<>();
  21. for (Queue<T> queue : queues) {
  22. if (queue == null) {
  23. continue; // Skip null queues
  24. }
  25. // Add elements from each queue to the merged queue
  26. while (!queue.isEmpty()) {
  27. mergedQueue.offer(queue.poll());
  28. }
  29. }
  30. return mergedQueue;
  31. }
  32. public static void main(String[] args) {
  33. //Example Usage
  34. Queue<Integer> q1 = new LinkedList<>();
  35. q1.offer(1);
  36. q1.offer(2);
  37. Queue<Integer> q2 = new LinkedList<>();
  38. q2.offer(3);
  39. q2.offer(4);
  40. Queue<Integer> q3 = new LinkedList<>();
  41. q3.offer(5);
  42. List<Queue<Integer>> queues = new ArrayList<>();
  43. queues.add(q1);
  44. queues.add(q2);
  45. queues.add(q3);
  46. Queue<Integer> merged = mergeQueues(queues);
  47. if (merged != null) {
  48. System.out.println("Merged Queue: " + merged);
  49. }
  50. }
  51. }

Add your comment