collections Module

The collections module introduces specialized data structures beyond built-in Arrays and Maps: Stack, Queue, Deque, Set, LinkedList, and PriorityQueue.

Importing

djazair
use collections

Data Structures Catalog

1. Stack (LIFO)

djazair
use collections

let s = new collections.Stack()
s.push(10)
s.push(20)
print(s.peek())     # => 20
print(s.pop())      # => 20
print(s.size())     # => 1
print(s.isEmpty())  # => False

2. Queue (FIFO) & Deque (Double-Ended)

djazair
use collections

# Queue
let q = new collections.Queue()
q.enqueue("Task 1")
q.enqueue("Task 2")
print(q.dequeue())  # => "Task 1"

# Deque (pushFront, pushBack, popFront, popBack)
let d = new collections.Deque()
d.pushBack(10)
d.pushFront(5)
print(d.popFront()) # => 5
print(d.popBack())  # => 10

3. Set (Unique Elements & Math Operations)

djazair
use collections

let s1 = new collections.Set()
s1.add(1).add(2).add(3)

let s2 = new collections.Set()
s2.add(2).add(3).add(4)

# Set algebra
let unionSet = s1.union(s2)             # contains 1, 2, 3, 4
let intersectSet = s1.intersection(s2)  # contains 2, 3
let diffSet = s1.difference(s2)        # contains 1

print(s1.has(2))                        # => True
print(s1.has(99))                       # => False

4. PriorityQueue (Min-Heap / Priority Ordering)

djazair
use collections

let pq = new collections.PriorityQueue()
pq.enqueue("Low priority task", 4)
pq.enqueue("Critical emergency", 1)
pq.enqueue("Medium priority task", 2)

# Dequeues in priority order (1 is highest priority):
print(pq.dequeue()) # => "Critical emergency"
print(pq.dequeue()) # => "Medium priority task"