1.0.1 • Published 5 years ago

object-queue v1.0.1

Weekly downloads
107
License
ISC
Repository
github
Last release
5 years ago

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.