In
computer science, a multimap (sometimes also multihash, multidict or multidictionary) 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
set
Set, The Set, SET or SETS may refer to:
Science, technology, and mathematics Mathematics
*Set (mathematics), a collection of elements
*Category of sets, the category whose objects and morphisms are sets and total functions, respectively
Electro ...
s as the map values.
Examples
* In a student enrollment system, where students may be enrolled in multiple classes simultaneously, there might be an association for each enrollment of a student in a course, where the key is the student ID and the value is the course ID. If a student is enrolled in three courses, there will be three associations containing the same key.
* The index of a book may report any number of references for a given index term, and thus may be coded as a multimap from index terms to any number of reference locations or pages.
*
Querystring
A query string is a part of a uniform resource locator (URL) that assigns values to specified parameters. A query string commonly includes fields added to a base URL by a Web browser or other client application, for example as part of an HTML, cho ...
s may have multiple values associated with a single field. This is commonly generated when a
web form
A webform, web form or HTML form on a web page allows a user to enter data that is sent to a server for processing. Forms can resemble paper or database forms because web users fill out the forms using checkboxes, radio buttons, or text fields. F ...
allows multiple
check boxes or selections to be chosen in response to a single form element.
Language support
C++
C++'s
Standard Template Library provides the
multimap
container for the sorted multimap using a
self-balancing binary search tree, and
SGI SGI may refer to:
Companies
*Saskatchewan Government Insurance
*Scientific Games International, a gambling company
*Silicon Graphics, Inc., a former manufacturer of high-performance computing products
*Silicon Graphics International, formerly Rac ...
's STL extension provides the
hash_multimap
container, which implements a multimap using a
hash table.
As of C++11, the
Standard Template Library provides the
unordered_multimap
for the unordered multimap.
Dart
Quiver provides a Multimap for
Dart
Dart or DART may refer to:
* Dart, the equipment in the game of darts
Arts, entertainment and media
* Dart (comics), an Image Comics superhero
* Dart, a character from ''G.I. Joe''
* Dart, a ''Thomas & Friends'' railway engine character
* Dar ...
.
Java
Apache Commons The Apache Commons is a project of the Apache Software Foundation, formerly under the Jakarta Project. The purpose of the Commons is to provide reusable, open source Java software. The Commons is composed of three parts: proper, sandbox, and dorm ...
Collections provides a MultiMap interface for
Java. It also provides a MultiValueMap implementing class that makes a MultiMap out of a Map object and a type of Collection.
Google Guava provides a Multimap interface and implementations of it.
Python
Python provides a
collections.defaultdict
class that can be used to create a multimap. The user can instantiate the class as
collections.defaultdict(list)
.
OCaml
OCaml
OCaml ( , formerly Objective Caml) is a general-purpose programming language, general-purpose, multi-paradigm programming language which extends the Caml dialect of ML (programming language), ML with object-oriented programming, object-oriented ...
'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.
See also
*
Abstract data type for the concept of type in general
*
Associative array for the more fundamental abstract data type
*
Multiset for the case where same item can appear several times
References
{{Data structures
Associative arrays
Abstract data types