En informática , un multimapa (a veces también multihash , multidict o multidictionary ) es una generalización de un mapa o un tipo de datos abstracto de 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, consulte la Biblioteca de plantillas estándar de C++ contenedores ). A menudo, el multimapa se implementa como un mapa con listas o conjuntos como valores del mapa.
Ejemplos
- En un sistema de inscripción de estudiantes, donde los estudiantes pueden estar inscritos en varias clases simultáneamente, puede haber una asociación para cada inscripció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á inscrito en tres cursos, habrá tres asociaciones que contengan la misma clave.
- El índice de un libro puede informar cualquier número de referencias para un término de índice determinado y, por lo tanto, puede codificarse como un multimapa desde los términos del índice hasta cualquier número de ubicaciones o páginas de referencia.
- Las cadenas de consulta pueden tener varios valores asociados a un único campo. Esto suele generarse 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 multimap
contenedor para el mapa múltiple ordenado utilizando un árbol de búsqueda binario autoequilibrado , [1] y la extensión STL de SGIhash_multimap
proporciona el contenedor, que implementa un mapa múltiple utilizando una tabla hash . [2]
A partir de C++11, la biblioteca de plantillas estándar proporciona unordered_multimap
el mapa múltiple no ordenado. [3]
Dardo
Quiver proporciona un multimapa para Dart . [4]
Java
Apache Commons Collections proporciona una interfaz MultiMap para Java . [5] También proporciona una clase de implementación MultiValueMap que crea un MultiMap a partir de un objeto Map y un tipo de Collection. [6]
Google Guava proporciona una interfaz Multimap e implementaciones de la misma. [7]
Pitón
Python proporciona una collections.defaultdict
clase que se puede utilizar para crear un mapa múltiple. El usuario puede crear una instancia de la clase como collections.defaultdict(list)
.
OCaml
El módulo de biblioteca estándar de OCamlHashtbl
implementa una tabla hash donde es posible almacenar múltiples valores para una clave.
Escala
La API del lenguaje de programación Scala también proporciona Multimap e implementaciones. [8]
Véase también
- Conjunto múltiple para el caso en el que el 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.
- ^ "Multimap". Documentación de la API de Quiver .
- ^ "Interfaz MultiMap". API de Commons Collections 3.2.2, Apache Commons .
- ^ "Clase MultiValueMap". API de Commons Collections 3.2.2, Apache Commons .
- ^ "Interfaz Multimap<K,V>". Biblioteca Guava 2.0 . Archivado desde el original el 15 de enero de 2013. Consultado el 1 de enero de 2013 .
- ^ "Scala.collection.mutable.MultiMap". API estable de Scala .