Multimap

This article is about the data type. For the mathematical concept, see Multivalued function. For the mapping website, see Multimap.com.

In computer science, a multimap (sometimes also multihash) is a generalization of a map or associative array abstract data type in which more than one value may be associated with and returned for a given key. Both map and multimap are particular cases of containers (for example, see C++ Standard Template Library containers). Often the multimap is implemented as a map with lists or sets as the map values.

Examples

Language support

C++

C++'s Standard Template Library provides the multimap container for the sorted multimap using a self-balancing binary search tree,[1] and SGI's STL extension provides the hash_multimap container, which implements a multimap using a hash table.[2]

Dart

Quiver provides a Multimap for Dart.[3]

Java

Apache Commons Collections provides a MultiMap interface for Java.[4] It also provides a MultiValueMap implementing class that makes a MultiMap out of a Map object and a type of Collection.[5]

Google Guava provides an interface Multimap and implementations. [6]

OCaml

OCaml's standard library module Hashtbl implements a hash table where it's possible to store multiple values for a key.

Scala

The Scala programming language's API also provides Multimap and implementations[7]

See also

References

  1. "multimap<Key, Data, Compare, Alloc>". Standard Template Library Programmer's Guide. Silicon Graphics International.
  2. "hash_multimap<Key, HashFcn, EqualKey, Alloc>". Standard Template Library Programmer's Guide. Silicon Graphics International.
  3. "Multimap". Quiver API docs.
  4. "Interface MultiMap". Commons Collections 3.2.1 API, Apache Commons.
  5. "Class MultiValueMap". Commons Collections 3.2.1 API, Apache Commons.
  6. "Interface Multimap<K,V>". Guava Library 2.0.
  7. "Scala.collection.mutable.MultiMap". Scala stable API.
This article is issued from Wikipedia - version of the Tuesday, September 15, 2015. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.