Class: PriorityQueue
- Inherits:
-
Object
- Object
- PriorityQueue
- Defined in:
- lib/priority_queue.rb
Instance Method Summary collapse
- #[](value) ⇒ Object
- #clear ⇒ Object
- #empty? ⇒ Boolean
-
#initialize ⇒ PriorityQueue
constructor
A new instance of PriorityQueue.
- #priorities ⇒ Object
- #shift ⇒ Object
- #size ⇒ Object
Constructor Details
#initialize ⇒ PriorityQueue
Returns a new instance of PriorityQueue.
4 5 6 |
# File 'lib/priority_queue.rb', line 4 def initialize clear end |
Instance Method Details
#[](value) ⇒ Object
12 13 14 |
# File 'lib/priority_queue.rb', line 12 def [](value) @queues[value] ||= Queue.new end |
#clear ⇒ Object
8 9 10 |
# File 'lib/priority_queue.rb', line 8 def clear @queues = {} end |
#empty? ⇒ Boolean
37 38 39 |
# File 'lib/priority_queue.rb', line 37 def empty? @queues.all? {|priority, queue| queue.empty?} end |
#priorities ⇒ Object
16 17 18 |
# File 'lib/priority_queue.rb', line 16 def priorities @queues.keys.sort end |
#shift ⇒ Object
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/priority_queue.rb', line 20 def shift priorities.each do |key| if not self[key].empty? return self[key].shift(true) else @queues.delete(key) end end nil end |
#size ⇒ Object
31 32 33 34 35 |
# File 'lib/priority_queue.rb', line 31 def size @queues.values.inject(0) do |size, queue| size + queue.size end end |