Queue in Dart
Queue in Dart
About
- Queues in Dart are ordered collections optimized for adding/removing elements at both ends.
- Unlike lists, they’re efficient for operations at beginning/end but not for random access.
- They can store elements of the same type or mixed types.
- Requires
dart:collection
library for queue operations.
Main Topics
-
Queue Creation
-
Definition: How to create and initialize queues in Dart.
-
Example:
import 'dart:collection'; void main() { // Creating an empty queue Queue<String> queue = Queue(); // Creating from existing list Queue<String> fromList = Queue.from(['A', 'B', 'C']); }
-
-
Queue Operations
-
Definition: Methods for adding, removing and accessing elements.
-
Example:
import 'dart:collection'; void main() { Queue<String> queue = Queue.from(['A', 'B']); // Adding elements queue.addLast('C'); // Add to end queue.addFirst('Z'); // Add to front // Removing elements queue.removeFirst(); queue.removeLast(); print(queue); // Outputs: {A, B} }
-
-
Queue Types
-
Definition: Default Queue vs DoubleLinkedQueue.
-
Example:
import 'dart:collection'; void main() { // Default Queue Queue<int> defaultQueue = Queue(); defaultQueue.addAll([1, 2, 3]); // DoubleLinkedQueue DoubleLinkedQueue<int> linkedQueue = DoubleLinkedQueue.from([4, 5, 6]); print(defaultQueue); // Outputs: {1, 2, 3} print(linkedQueue); // Outputs: {4, 5, 6} }
-
-
Queue Iteration
-
Definition: Techniques for looping through queue elements.
-
Example:
import 'dart:collection'; void main() { Queue<String> queue = Queue.from(['X', 'Y', 'Z']); // Using for loop for (var item in queue) { print(item); } // Using forEach queue.forEach((item) { print(item); }); }
-
-
Queue Methods
-
Definition: Common queue manipulation methods.
-
Example:
import 'dart:collection'; void main() { Queue<int> queue = Queue.from([10, 20, 30]); // Adding elements queue.addLast(40); queue.addFirst(5); // Removing elements queue.removeFirst(); queue.removeLast(); // Clearing queue queue.clear(); print(queue); // Outputs: {} }
-
How to Use
- Creating: Use
Queue()
constructor orQueue.from()
- Accessing: Use
first
andlast
properties or iteration - Modifying: Use
addFirst
,addLast
,removeFirst
,removeLast
- Iterating: Use
for-in
loops orforEach
How It Works
- Creation: Can initialize empty or from existing collections
- Operations: Optimized for O(1) operations at both ends
- Iteration: Maintains insertion order during iteration
- Types: Default Queue is efficient for most cases
Example of Queue Operations:
import 'dart:collection';
void main() {
Queue<String> queue = Queue.from(['First', 'Second']);
// Modifying queue
queue.addLast('Third');
queue.addFirst('Zero');
queue.removeFirst();
// Iterating
queue.forEach((item) {
print(item); // Outputs: First, Second, Third
});
}
Conclusion
A Queue in Dart is a specialized collection optimized for efficient insertion and removal at both ends. It excels in FIFO (First-In-First-Out) and LIFO (Last-In-First-Out) operations, offering better performance for these scenarios compared to lists while maintaining element insertion order.