• 08/09/2024 2:10 AM

Mapas

porJesus Flores

Ago 25, 2021

Un mapa no es más que una estructura de datos del tipo llave/valor pares clave / valor, los mapas son útiles para buscar un valor por su clave asociada. Nos permite almacenar valores en el mapa de acuerdo a una llave.

Los mapas poseen una gran capacidad para recuperar datos rápidamente según la llave. Una llave es un índice el cual apunta al valor asociado a dicha llave.

Es sencillo implementar un mapa mediante una tabla hash, puesto que nos proporciona búsquedas más rápidas en el conjunto de datos y recupera fácilmente un valor proporcionando la llave. Los mapas son colecciones desordenadas por lo que no hay forma de predecir el orden en el que se devolverán los valores. Es importante recalcar que en cada iteración sobre un mapa puede devolver un orden diferente.

Inicializar Mapas

Los mapas son creados con corchetes , se define la llave y el valor.

package main
 
import "fmt"
 
//indicamos que nuestro mapa tendrá la llave de tipo string y un valor entero
var spidermen= map[string]int{"Toby": 2002, "Andrew": 2012}
 
func main() {
	fmt.Println(spidermen)
}

Declaración de un Mapa Vacío

package main
 
import "fmt"
 
func main() {
        
	var spidermen= map[string]int{}
	fmt.Println(spidermen)        // map[]
	fmt.Printf("%T\n", spidermen) // map[string]int
}

Declaración de un Mapa con la función Make

Con la función make es posible crear el mapa y obtenerlo inicializado.

package main
 
import "fmt"
 
func main() {
	var spidermen= make(map[string]int)
	spidermen["toby"] = 2002
	spidermen["tom"] = 2020
	fmt.Println(spidermen)
}

Acceder a los elementos

La manera de acceder a los elementos de un mapa es haciendo referencia al nombre de su llave dentro de corchetes.

package main
 
import "fmt"
 
func main() {
	var spidermen= map[string]int{"peter": 2002, "miles": 2020}
 
	fmt.Println(spidermen["peter"])
}

Agregar y Actualizar Elementos

Para agregar un elemento a el mapa solo es necesario agregar la llave y asignar el valor, si el valor no existe se agrega al mapa y si existe se actualiza el valor.

package main
 
import "fmt"
 
func main() {
	var spidermen= map[string]int{"toby": 2002, "andrew": 2012}
	fmt.Println(spidermen) // imprimimos el valor inicial del mapa
 
	spidermen["tom"] = 2020 // de esta manera agregamos un nuevo elemento al mapa
	spidermen["toby"] = 2004// de esta manera actualizamos el valor del elemento toby
 
	fmt.Println(spidermen) //imprimimos el mapa ya con los nuevos elementos agregados
}

Remover Elementos

Para remover los elementos deseados en un Mapa contamos con la función delete que borra un elemento en función de la llave proporcionada.

package main
 
import "fmt"
 
func main() {
	var spidermen= make(map[string]int)
	spidermen["toby"] = 2002
	spidermen["andrew"] = 2010
	spidermen["miles"] = 2020
	spidermen["tom"] = 2020
 
	fmt.Println(spidermen)
        //le indicamos a la funcion delete que borre del mapa spidermen el elemento 
        //asociado a la llave "tom"
	delete(spidermen, "tom")
	fmt.Println(spidermen)
}

Recorrer un Mapa

Utilizando la sentencia for…range es posible recorrer los elementos de un mapa recuperando La llave(índice) y el elemento del mapa.

package main
 
import "fmt"
 
func main() {
    var spidermen= map[string]int{"peter": 2002, "andrew": 2010,
        "miles": 2020, "tom": 2021}
    for key, spiderman:= range spidermen{
        fmt.Println("llave:", key, "=>", "Elemento:", spiderman)
    }
}

Siguientes pasos con Mapas:

Ahora que conocemos lo necesario para trabajar con mapas, intentemos resolver los siguientes ejercicios, compártenos tu solución:

1.- Escribir una función que borre todos los elementos de un mapa
2.- Escribir una función que ordene las llaves de un mapa
3.- Escribir una función que ordene los valores de un mapa
4.- Escribir una función que mezcle los elementos de dos mapas

por Jesus Flores

Ingeniero de Software y Agile Coach

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *