@rimbu/bimultimap
v2.1.1
Published
A bidirectional immutable MultiMap of keys and values for TypeScript
Downloads
19,059
Maintainers
Readme
@rimbu/bimultimap
A BiMultiMap is a bidirectional MultiMap of keys and values, where each key-value association also has an inverse value-key association. There is a many-to-many mapping between keys and values.
This package exports the following types:
| Name | Description |
| ------------------------ | ---------------------------------------------------------------- |
| BiMultiMap<K, V>
| a generic BiMultiMap between keys of type K and values of type V |
| HashBiMultiMap<K, V>
| a BiMultiMap implementation where keys and values are hashed |
| SortedBiMultiMap<K, V>
| a BiMultiMap implementation where keys and values are sorted |
For complete documentation please visit the BiMultiap page in the Rimbu Docs, or directly see the Rimbu BiMultiMap API Docs.
Or Try Out Rimbu in CodeSandBox.
Installation
Compabitity
Yarn / NPM / Bun
For convenience, all main types are also exported through @rimbu/core
.
To install this package only:
For yarn
:
yarn add @rimbu/bimultimap
For npm
:
npm i @rimbu/bimultimap
For bun
:
bun add @rimbu/bimultimap
Deno
For Deno, the following approach is recommended:
In the root folder of your project, create or edit a file called import_map.json
with the following contents (where you should replace x.y.z
with the desired version of Rimbu):
{
"imports": {
"@rimbu/": "https://deno.land/x/[email protected]/"
}
}
Note: The trailing slashes are important!
In this way you can use relative imports from Rimbu in your code, like so:
import { List } from '@rimbu/core/mod.ts';
import { HashMap } from '@rimbu/hashed/mod.ts';
Note that for sub-packages, due to conversion limitations it is needed to import the index.ts
instead of mod.ts
, like so:
import { HashMap } from '@rimbu/hashed/map/index.ts';
To run your script (let's assume the entry point is in src/main.ts
):
deno run --import-map import_map.json src/main.ts
Usage
import { HashBiMultiMap } from '@rimbu/bimultimap';
const biMultiMap = HashBiMultiMap.of([1, 'a'], [2, 'b'], [3, 'b']);
console.log(biMultiMap.toString());
// HashBiMultiMap(1 <-> ['a'], 2 <-> ['b'], 3 <-> ['b'])
console.log(biMultiMap.getValues(1).toArray());
// ['a']
console.log(biMultiMap.getKeys('b').toArray());
// [2, 3]
Author
Contributing
Feel very welcome to contribute to further improve Rimbu. Please read our Contributing guide.
Contributors
Made with contributors-img.
License
Licensed under the MIT License, Copyright © 2020-present Arvid Nicolaas.
See LICENSE for more information.