object-queue
v1.0.1
Published
Object queue
Downloads
179
Readme
object-queue
Fast and light queue of objects.
installation
npm install --save object-queue
API
Table of Contents
ObjectQueue
A simple and high performance queue for objects based on a singly linked list. It acts like a Set, the same entry cannot exists twice in the queue. Entries must be reference types (objects or functions). All the basic operations are O(1).
Note: This queue works by setting a private symbol property to the target object. If you don't dequeue all the elements or don't clear the queue after you finish using it or the entries, the link between entries will not be garbage collected. This may create memory leaks.
Note: Despite the fact that this queue is iterable, modifying the queue while iterating is unsafe (it may break the queue, enter infinite loops, create memory leaks).
head
Readonly Property: The head of the queue, the first element.
Contains the next item to be dequeued.
Type: (Object | null)
tail
Readonly Property: The tail of the queue, the last element.
Contains the last item to be dequeued.
Type: (Entry | null)
size
Readonly Property: The number of items in the queue.
Type: number
has
Checks wether the given entry exists in the queue or not.
Complexity is O(1).
Parameters
entry
(Entry | null | undefined) The entry to look for.
Returns boolean True if the entry exists in the queue, false if not.
getNext
Given an element in the queue, returns the next element. Returns null if the element is not owned by the queue or is the last element.
Note: Despite the fact that this queue is iterable, modifying the queue while iterating is unsafe (it may break the queue, enter infinite loops, create memory leaks).
Complexity is O(1)
Parameters
entry
(Entry | null | undefined) The entry to look for.
Returns (Entry | null) The next entry in the query or null if not available.
enqueue
Adds a new item into the queue. Returns true if operation succeeded, false if not.
Complexity is O(1).
Parameters
entry
Entry The entry to enqueue.
Returns boolean True if entry was enqueued, false if not
enqueueMany
Enqueues many entries in one single call.
Returns the number of enqueued entries.
Parameters
entries
Iterable<Entry> The iterable of entries to enqueue.
Returns number The number of enqueued entries.
dequeue
Removes an entry from the queue. Returns null if the queue is empty.
Complexity is O(1).
Returns (Entry | null) The entry dequeued or null if the queue is empty.
clear
Empties the queue.
Complexity is O(n).
Returns undefined
delete
Removes an element from the queue.
Since this operation have to loop all entries in the queue, try to avoid deleting elements.
Complexity is O(n).
Parameters
entry
(Entry | null | undefined) The entry to remove
Returns boolean True if entry was removed during this call, false if invalid or not found.
toArray
Copies all items in the queue in a new array and returns it.
Complexity is O(n).
Returns Array<Entry> An array that contains all entries in the queue.
toSet
Copies all items in the queue in a new Set and returns it.
Complexity is O(n).
Returns Set<Entry> A set that contains all entries in the queue.
iterator
Iterates all elements in the queue, from head to tail.
Note: Despite the fact that this queue is iterable, modifying the queue while iterating is unsafe (it may break the queue, enter infinite loops, create memory leaks).
Returns Iterator<Entry> An iterable iterator that can be used to iterate all entries.