You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesi贸n a prueba de IA

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

1 D铆as
7 Hrs
40 Min
51 Seg

Maps

23/37
Resources

What are Maps in Kotlin?

Maps in Kotlin are part of the collection family and are used to store pairs of elements, where each key has an associated value. This data structure is known as key-value and is fundamental to organize and manipulate data efficiently in an application.

In this class we do not confuse maps with the map function we saw earlier. Here, we focus on maps as collections of data.

How to create and use Maps in Kotlin?

To start using maps, you can make use of the mapOf function. This allows you to create an immutable map, which means that once created, its elements cannot be added or modified.

Creating Maps with Superheroes

Consider the following example, where different superheroes are recorded with their ages using mapOf:

val ageSuperheroes = mapOf( " Iron Man" to 35, " Spiderman" to 23, " Captain America" to 99).

This code creates a map where each superhero is a key, and his age is the associated value. Note that mapOf creates an immutable map.

Mutable maps and use of mutableMapOf

Unlike immutable maps, mutable maps(mutableMapOf) allow you to modify their elements after creation. This is achieved by using mutableMapOf.

val ageSuperheroesMutable = mutableMapOf( " Iron Man" to 35, " Spiderman" to 23, " Captain America" to 99)

In appearance, there is no visual difference with an immutable map until you start modifying its content.

How to modify the content of a mutable map?

Adding elements

To add a new superhero to a mutable map, use the put function:

ageSuperheroesMutable.put("Wolverine", 45).

You can also use the bracket notation:

ageSuperheroesMutable["Storm"] = 30

Both methods allow you to assign a value to a new key within the mutable map.

Deleting elements

Removing an element is done with the remove function, providing the key of the element to be removed:

ageSuperheroesMutable.remove("Wolverine").

This method is similar to the one used in lists, but here the key is used instead of an index.

How to access the values of a Map?

To get a specific value from a map, the corresponding key is used:

val ageIronMan = ageSuperheroesMutable["Iron Man"]println(ageIronMan) // Print: 35.

It is a good practice to define the key as a variable to avoid typos.

How to get all the keys or values of a Map?

It is possible to list all the keys or all the values of a map using the keys and values properties, respectively.

println(ageSuperheroesMutable.keys) // Print: [Iron Man, Spiderman, Captain America, Storm]println(ageSuperheroesMutable.values) // Print: [35, 23, 99, 30] // Print: [35, 23, 99, 30].

This is useful when working with data from other sources and the full contents of the map are unknown.

Recommendations and usage practices

  1. Immutability: Whenever possible, work with immutable collections. This ensures data integrity and consistency.

  2. Predefined functions: Kotlin offers a multitude of predefined functions to manipulate collections. Consider using them before developing your own solutions.

  3. Error handling: When accessing values in a map, consider what should happen if a key does not exist. Use the ?: operator to handle null values elegantly and prevent errors.

Maps are a powerful tool in Kotlin for managing and organizing data. With this knowledge, you are ready to perform complex and optimized operations in your applications. Keep exploring to discover all that Kotlin has to offer!

Contributions 18

Questions 1

Sort by:

Want to see more contributions, questions and answers from the community?





consejo de nuevo, puedes correr el programa con shift+F10

Mapas
Los mapas asocian claves con valores. Las claves deben ser 煤nicas, pero los valores asociados no. De este modo, cada valor puede ser usado para identificar de manera 煤nica el valor asociado, ya que el mapa asegura que no puedes duplicar claves en la colecci贸n. Internamente, Kotlin usa la colecci贸n Java Map para implementar los mapas.
A diferencia de las interfaces List y Set en Kotlin que extienden la interfaz Collection, la interfaz Map no extiende nada. Algunas de las propiedades y funciones disponibles en esta interfaz se muestran a [g1] continuaci贸n. Observa como solo se permite hacer consultas, al definir una colecci贸n inmutable.

  • size: tama帽o de la colecci贸n.

  • isEmpty(): indica si el mapa est谩 vac铆o.

  • containsKey(key: K): indica si el mapa contiene una clave.

  • containsValue(value: V): indica si el mapa contiene un valor.

  • get(key: K): valor asociado a la llave dada o null si no se encuentra.

  • keys: devuelve un Set inmutable con todas las claves en el mapa.

  • values: Collection inmutable de todos los valores en el mapa.

mapOf() crea un mapa inmutable compuesto por una lista de pares, donde el primer valor es la clave, y el segundo es el valor. Devuelve un objeto de tipo Map.

val prefijos: Map<Int, String> = mapOf(34 to "Espa帽a", 1 to "USA", 
                                                           233 to "Ghana")
for ((key, value) in prefijos) {
    println("$key es el c贸digo telef贸nico de $value")
}

Podemos obtener el valor de una clave usando la funci贸n get(). Tambi茅n podemos usar los corchetes como un atajo para get().

print(prefijos.get(34)) // Espa帽a
print(prefijos[34])     // Espa帽a 

La interfaz MutableMap no extiende la interfaz MutableCollection; su 煤nico padre es la interfaz Map. Este anula las propiedades keys, entries y values de la interfaz padre para poder redefinirlas. Adem谩s, incluye algunas funciones extra como:

  • put(key: K, value: V) inserta el par clave-valor en el mapa. Devolver谩 el valor previo enlazado con la clave o null si la clave no exist铆a.
    r

  • emove(key: K) borra la clave y su valor enlazado.

  • putAll(from: Map<out K, V>) agrega nuevos pares clave-valor desde otro mapa. Si una clave ya existente ser谩 actualizada con el nuevo valor.

  • clear() elimina todos los elementos del mapa.

mutableMapOf() permite crear un mapa mutable sin indicar la implementaci贸n:

val monedas: MutableMap<String, String> = mutableMapOf("euro" to "Espa帽a", 
                                  "dolar" to "EEUU", "libra" to "UK")
println("Paises ${ monedas.values}") 
println("Monedas ${ monedas.keys}") 
monedas.put("cedi", "Ghana")
monedas.remove("dolar")  

Para indicar implementaciones espec铆ficas dispones de: hashMapOf() para crear un mapa de tipo LinkedHashMap., donde puedes consultar el orden en que los elementos fueron insertados, y sortedMapOf() para SortedMap, en el cual todas las entradas se almacenan en un orden de clave ascendente.

fuente:https://www.androidcurso.com/index.php/99-kotlin/925-colecciones-en-kotlin-list-set-y-map

Para los que vienen de otro lenguaje como python los maps son diccionarios 馃槂

C贸digo de la clase

fun main (args: Array<String>){
    //son de clave valor
    //para cada clave hay un valor

    //mapa inmutable
    var edadHeroes = mapOf(
            "Ironman" to 35,
            "Spiderman" to  23,
            "Capitan America" to 99
    )
    println(edadHeroes)

    //mapa mutable
    val edadHeroesMutable = mutableMapOf(
            "Ironman" to 35,
            "Spiderman" to  23,
            "Capitan America" to 99
    )
    println(edadHeroesMutable)

    //agregamos elemento
    edadHeroesMutable.put("Wolverine", 45)
    println(edadHeroesMutable)

    edadHeroesMutable["Storm"] = 30
    println(edadHeroesMutable)

    //podemos hacer get a la lista mutable o imutable
    val edadIronman = edadHeroes["Ironman"]
    println(edadIronman)

    //eliminar
    edadHeroesMutable.remove("Wolverine")
    println(edadHeroesMutable)

    //vemos llaves
    println(edadHeroesMutable.keys)

    //vemos valores
    println(edadHeroesMutable.values)
}

Como nota adicional, el recuperar valores por medio de su Key en un map , existe sensibilidad a mayusculas y minusculas, osea, no es lo mismo recuperar

val edadIronman= edadSuperHeroesMutable["Ironman"] // Retorna 35
val edadIronman= edadSuperHeroesMutable["ironman"] //Retorna null

Si est谩s buscando almacenar una lista de elementos con un orden espec铆fico y debes tener acceso a ellos mediante un 铆ndice, listOf es una buena opci贸n. Es una lista inmutable, lo que significa que una vez que se ha creado, no se puede modificar.

Si est谩s buscando almacenar elementos con una clave y un valor asociado, y debes tener acceso a ellos mediante la clave, mapOf es una buena opci贸n. Es un mapa inmutable, lo que significa que una vez que se ha creado, no se puede modificar.

En ambos casos podr铆as usar MutableList, MutableMap respectivamente para poder modificar y actualizar los elementos contenidos en ellos.

Cre茅 un map con una lista de medicamentos que puede modificarse.

import java.util.Scanner

fun main() {

    val medication = mutableMapOf <String, String> (

    )
    val sc = Scanner(System.`in`)
    var agregarMed = true
    if (agregarMed) {


        do  {
        // c贸digo para agregar medicamentos al mapa

        println("Escriba el nombre del medicamento")
        val medicationName = sc.nextLine()
        println("Ingrese la hora en que debe tomarlo :: Ej 8:00 ::")
        val time = sc.nextLine()
        medication.put(medicationName, time)
        println("Desea agregar m谩s medicamentos? (S/N)")
        var continuar = sc.nextLine()

    } while (continuar.equals("S", true))



    }

    if (!medication.isEmpty()) {
        printerLines(50)
        println("Lista de medicamentos")
        println(medication)
    } else {
        printerLines(50)
        print("No hay medicamentos")

    }
}

Deseo crear una app que sirva para los ancianos en su d铆a a d铆a.

 //Map inmutable no se puede eliminar o cambiar su contenido
    val edadSuperHeroes = mapOf(
        "Ironman" to 35, "Spiderman" to 23,
        "Capit谩n Am茅rica" to 99
    )
    println(edadSuperHeroes)

    //Map mutable
    val edadSuperHeroesMutable = mutableMapOf(
        "Ironman" to 35, "Spiderman" to 23,
        "Capit谩n Am茅rica" to 99
    )

    println(edadSuperHeroesMutable)

    //Adicionar elementos con put
    edadSuperHeroesMutable.put("Wolwerine", 45)

    println(edadSuperHeroesMutable)

    //Otra forma de adicionar es convertir put en una asignaci贸n
    edadSuperHeroesMutable["Storm"] = 30

    println(edadSuperHeroesMutable)

    //Obtener un valor del map
    val edadIronman = edadSuperHeroesMutable["Ironman"]
    println(edadIronman)

    //Eliminar elementos del map
    edadSuperHeroesMutable.remove("Wolwerine")
    println(edadSuperHeroesMutable)

    //Conocer todos las claves de un map
    println(edadSuperHeroesMutable.keys)

    //Conocer todos los valores de un map
    println(edadSuperHeroesMutable.values)

Usando lo aprendido en los ciclos podr铆amos recorrer estos mapas con un ciclo for de la siguiente manera:

for (hero in mutableSuperHeroesAges) println("Hero: ${hero.key} - Age: ${hero.value}")

O puedes definir mutableSuperHeroesAges.entries para tener acceso a su key, value inmediatamente tambi茅n. Las posibilidades son muchas depende lo que quieras lograr.

Consejo puedes ejecturar el programa con Ctrl + shift + f10 as铆 me funciona en Windows 10

**Consejo de eficiencia:** Hay un pluging llamado **Key Promoter X** este te muestra mensajes de atajos de teclados cuando haces algo que podrias hacer mas rapido para que reduzcas el uso del mouse y estar mas en el teclado, y poco a poco memorices estos atajos. Para instalarlo da click en file y luego settings (o usa el atajo control + ALT + s), ve a plugins, y escribe ek nombre del pluging y lo instalas, se los recomiendo a mi me ha funcionado y a aumentado mi eficiencia.
* **Listas** (*List*): colecci贸n ordenada con acceso a sus elementos por el 铆ndice o posici贸n de cada uno. * **Conjuntos** (*Set*): colecci贸n de elementos 煤nicos (no repetidos) donde el orden no suele ser relevante. * **Diccionarios** (*Map*): conjunto de pares del tipo clave-valor donde las claves son 煤nicas y a cada una de ellas se asigna un valor (que pueden ser duplicados), por lo que suelen ser 煤tiles para almacenar conexiones l贸gicas entre objetos.
tambien se puede a帽adir o remover con += y -= `edadSuperHeroesMutables += ("Thor" ``to ``1500)` `edadSuperHeroesMutables.remove("Wolverine")` `println``(edadSuperHeroesMutables)` `edadSuperHeroesMutables -= ("Storm")` `println``(edadSuperHeroesMutables)`
fun main(args: Array<String>) {
  //No tienen forma de acceder por un orden espectifico

  //Inmutable
  val edadSuperHeroes = mapOf("IronMan" to 35, "Spiderman" to 23, "Capitan America" to 99)

  println(edadSuperHeroes)
  /*{IronMan=35, Spiderman=23, Capitan America=99}*/

  //Mutable
    val edadSuperHeroesMutable = mutableMapOf("IronMan" to 35, "Spiderman" to 23, "Capitan America" to 99)
     println(edadSuperHeroesMutable)
       /*{IronMan=35, Spiderman=23, Capitan America=99}*/

       //Agregar a la lista

       //put

       edadSuperHeroesMutable.put("Wolverine",45)
       println(edadSuperHeroesMutable) 
              /*{IronMan=35, Spiderman=23, Capitas America=99, Wolverine=45}*/

       //covertir asignaci贸n
        edadSuperHeroesMutable["Storm"]=30;
   println(edadSuperHeroesMutable) 
   /*{IronMan=35, Spiderman=23, Capitas America=99, Wolverine=45, Storm=30}*/

   /*Obtener un valor*/
   val edadIroman = edadSuperHeroesMutable["IronMan"]
  println(edadIroman)/*35*/

  /*Eliminar*/
  edadSuperHeroesMutable.remove("Wolverine")
  println(edadSuperHeroesMutable) 

  /*Se puede conocer todas las listas y/o valoress del mapa*/
  
  println(edadSuperHeroesMutable.keys)
  /*[IronMan, Spiderman, Capitan America, Storm*/
  println(edadSuperHeroesMutable.values)
  /*[35, 23, 99, 30]*/
}
fun main(args: Array<String>) {
	
// mapa inmutable
var edadSuperHeroes = mapOf(
		"Iroman" to 35,
		"Spiderman" to 23,
		"Capitan America" to 99,
	)
	
println(edadSuperHeroes)

// mapa mutable
var edadDeSuperHeroesMutale = mutableMapOf(
"Ironman" to 35,
"Sipiderman" to 23,
"Capitan America" to 99
)

println(edadSuperHeroesMutable)

// agregar un elemento al mapa
edadDeSuperHeroesMutable.put("Wolverine", 45)

// agregar elemento al mapa en forma de asignaci贸n
edadSuperHeroesMutable["Storm"] = 23

// acceder a un elemento del mapa
val edadIroman = edadSuperHeroesMutable['Ironman']

// eliminar elementos del mapa
edadSuperHeroesMutable.remove(key: 'Wolverine')

// regresar la lista de claves del mapa
println(edadSuperHeroesMutable.keys)
	
}
var edadHeroes = mapOf(
        "Ironman" to 35,
        "Spiderman" to  23,
        "Capitan America" to 99
    )
    println(edadHeroes)

    val edadHeroesMutable = mutableMapOf(
        "Ironman" to 35,
        "Spiderman" to  23,
        "Capitan America" to 99
    )
    println(edadHeroesMutable)

    edadHeroesMutable.put("Wolverine", 45)
    println(edadHeroesMutable)

    edadHeroesMutable["Storm"] = 30
    println(edadHeroesMutable)

    val edadIronman = edadHeroes["Ironman"]
    println(edadIronman)

    edadHeroesMutable.remove("Wolverine")
    println(edadHeroesMutable)

    println(edadHeroesMutable.keys)

    println(edadHeroesMutable.values)

Muy buena explicaci贸n por medio del Universo Marvel.