En informática , un multimapa (a veces también multihash , multidict o multidiccionario ) es una generalización de un tipo de dato abstracto de mapa o matriz asociativa en el que se puede asociar y devolver más de un valor para una clave dada. Tanto el mapa como el multimapa son casos particulares de contenedores (por ejemplo, véase la biblioteca estándar de plantillas de C++ ). A menudo, el multimapa se implementa como un mapa con listas o conjuntos como valores del mapa.
Ejemplos
- En un sistema de matriculación de estudiantes, donde los alumnos pueden estar matriculados en varias clases simultáneamente, podría existir una asociación para cada matriculación de un estudiante en un curso, donde la clave es el ID del estudiante y el valor es el ID del curso. Si un estudiante está matriculado en tres cursos, habrá tres asociaciones que contendrán la misma clave.
- El índice de un libro puede incluir cualquier número de referencias para un término de índice determinado y, por lo tanto, puede codificarse como un mapa múltiple que relaciona los términos de índice con cualquier número de ubicaciones o páginas de referencia.
- Las cadenas de consulta pueden tener varios valores asociados a un mismo campo. Esto suele ocurrir cuando un formulario web permite seleccionar varias casillas de verificación o selecciones en respuesta a un único elemento del formulario.
Soporte de idiomas
C++
La biblioteca de plantillas estándar de C++ proporciona el multimapcontenedor para el multimapa ordenado usando un árbol de búsqueda binaria autoequilibrado , [ 1 ] y la extensión STL de SGIhash_multimap proporciona el contenedor, que implementa un multimapa usando una tabla hash . [ 2 ]
A partir de C++11, la Biblioteca de Plantillas Estándar proporciona la función unordered_multimappara el multimapa no ordenado. [ 3 ]
Dardo
Java
Apache Commons Collections proporciona una interfaz MultiMap para Java . [ 5 ] También proporciona una clase implementadora MultiValueMap que crea un MultiMap a partir de un objeto Map y un tipo Collection. [ 6 ]
Google Guava proporciona una interfaz Multimap e implementaciones de la misma. [ 7 ]
Kotlin
Kotlin no tiene soporte explícito para multimapas, [ 8 ] pero puede implementarlos usando mapas con contenedores [ 9 ] para el tipo de valor. Por ejemplo, se Map<User, List<Book>>puede asociar cada usuario con una lista de libros.
Pitón
Python proporciona una collections.defaultdictclase que se puede utilizar para crear un multimapa. El usuario puede instanciar la clase como collections.defaultdict(list).
OCaml
El módulo de la biblioteca estándar de OCamlHashtbl implementa una tabla hash donde es posible almacenar múltiples valores para una clave.
Scala
La API del lenguaje de programación Scala también proporciona Multimap e implementaciones. [ 10 ]
Véase también
- Conjunto múltiple para el caso en que un mismo elemento puede aparecer varias veces.
Referencias
- ↑ "multimap<Key, Data, Compare, Alloc>" . Guía del programador de la biblioteca de plantillas estándar . Silicon Graphics International .
- ↑ "hash_multimap<Key, HashFcn, EqualKey, Alloc>" . Guía del programador de la biblioteca de plantillas estándar . Silicon Graphics International .
- ↑ "Borrador de trabajo, estándar para el lenguaje de programación C++" (PDF) . pág. 7807.
- ↑ "Multimapa" . Documentación de la API de Quiver .
- ↑ "Interface MultiMap" . API de Commons Collections 3.2.2, Apache Commons .
- ↑ "Clase MultiValueMap" . API de Commons Collections 3.2.2, Apache Commons .
- ↑ "Interface Multimap<K,V>" . Biblioteca Guava 2.0 . Archivado del original el 15/01/2013 . Consultado el 01/01/2013 .
- ↑ "Implementar un MultiMap en Kotlin | Baeldung on Kotlin" . 5 de diciembre de 2023.
- ↑ "Acceso a datos mediante DAO de sala" .
- ↑ "Scala.collection.mutable.MultiMap" . API estable de Scala .
- Matrices asociativas
- Tipos de datos abstractos