maps/index.js

/**
 *  A map is a collection of key-value pairs. JavaScript ships a built-in `Map` type. 
 *  This `maps` module introduces two more map data structures to the mix:
 *    - `HashMap`, a map implementation using an array and a hash function. Runtime `O(1)`.
 *    - `TreeMap`, a map implementation that uses a self-balanced {@link BinarySearchTree}.
 *      Runtime `O(logn)`
 *  
 *  A `HashMap` is more time-efficient, whereas a `TreeMap` is more space-efficient. The keys
 *  in a `TreeMap` are always sorted. This may or may not be the implementation detail in `HashMap`.
 *  Additionally, `TreeMap` offers some statistical data, such as maximum/minimum value, median,
 *  range of keys etc., for "free". `HashMap` does not.
 *  
 *  **`TreeMap` guarantees an `O(logn)` search complexity. `HashMap` offers an average complexity**
 *  **of `O(1)` but in the rare case of a rehash, it would take `O(n)`.**
 * 
 *  @module maps
 */
const HashMap = require("./hashmap")
const TreeMap = require("./treemap")

module.exports = {
  /** @type HashMap */
  HashMap,
  /** @type TreeMap */
  TreeMap
}