1. import java.util.LinkedList;
  2. import java.util.Queue;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. class QueueFlattener {
  6. /**
  7. * Flattens a nested structure of queues into a single list for monitoring.
  8. *
  9. * @param queues A list of queues to flatten.
  10. * @return A list containing all elements from the input queues.
  11. */
  12. public static <T> List<T> flattenQueues(List<Queue<T>> queues) {
  13. List<T> flattenedList = new ArrayList<>(); // Initialize an empty list to store flattened elements.
  14. if (queues == null || queues.isEmpty()) {
  15. return flattenedList; // Return empty list if input is null or empty.
  16. }
  17. for (Queue<T> queue : queues) { // Iterate through each queue in the input list.
  18. if (queue != null) { // Check if the queue is not null
  19. while (!queue.isEmpty()) { // Iterate while the queue is not empty.
  20. flattenedList.add(queue.poll()); // Dequeue an element and add it to the flattened list.
  21. }
  22. }
  23. }
  24. return flattenedList; // Return the flattened list.
  25. }
  26. public static void main(String[] args) {
  27. // Example usage:
  28. Queue<Integer> queue1 = new LinkedList<>();
  29. queue1.add(1);
  30. queue1.add(2);
  31. queue1.add(3);
  32. Queue<Integer> queue2 = new LinkedList<>();
  33. queue2.add(4);
  34. queue2.add(5);
  35. Queue<Integer> queue3 = new LinkedList<>();
  36. queue3.add(6);
  37. List<Queue<Integer>> queues = new ArrayList<>();
  38. queues.add(queue1);
  39. queues.add(queue2);
  40. queues.add(queue3);
  41. List<Integer> flattened = flattenQueues(queues);
  42. System.out.println(flattened); // Output: [1, 2, 3, 4, 5, 6]
  43. }
  44. }

Add your comment