Multimap
This article needs more citations. (February 2022) |
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 sets 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.
- Querystrings may have multiple values associated with a single field. This is commonly generated when a web form 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,[1] and SGI's STL extension provides the hash_multimap container, which implements a multimap using a hash table.[2]
As of C++11, the Standard Template Library provides the unordered_multimap for the unordered multimap.[3]
Dart
Quiver provides a Multimap for Dart.[4]
Java
Apache Commons Collections provides a MultiMap interface for Java.[5] It also provides a MultiValueMap implementing class that makes a MultiMap out of a Map object and a type of Collection.[6]
Google Guava provides a Multimap interface and implementations of it.[7]
Kotlin
Kotlin does not have explicit support for multimaps,[8] but can implement them using Maps with containers[9] for the value type. E.g. a Map<User, List<Book>> can associate each User with a list of Books.
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'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.[10]
See also
- Multiset for the case where same item can appear several times
References
- ^ "multimap<Key, Data, Compare, Alloc>". Standard Template Library Programmer's Guide. Silicon Graphics International.
- ^ "hash_multimap<Key, HashFcn, EqualKey, Alloc>". Standard Template Library Programmer's Guide. Silicon Graphics International.
- ^ "Working Draft, Standard for Programming Language C++" (PDF). p. 7807.
- ^ "Multimap". Quiver API docs.
- ^ "Interface MultiMap". Commons Collections 3.2.2 API, Apache Commons.
- ^ "Class MultiValueMap". Commons Collections 3.2.2 API, Apache Commons.
- ^ "Interface Multimap<K,V>". Guava Library 2.0. Archived from the original on 2013-01-15. Retrieved 2013-01-01.
- ^ "Implement a MultiMap in Kotlin | Baeldung on Kotlin". 5 December 2023.
- ^ "Accessing data using Room DAOs".
- ^ "Scala.collection.mutable.MultiMap". Scala stable API.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.