Introducci贸n a Kotlin
Introducci贸n al Curso de Kotlin
Qu茅 es la Java Virtual Machine
Qu茅 es Kotlin
Configuraci贸n del entorno
Instalaci贸n de IntelliJ
Instalaci贸n de IntelliJ en Linux
Kotlin con Visual Studio Code
Hola mundo Kotlin
Hola mundo con Kotlin
Variables en Kotlin
Kotlin y sus tipos de variables
Modificadores y tipos de datos en Kotlin
Operaciones con los tipos de datos en Kotlin
Kotlin y la programaci贸n funcional
Estructuras de control: if
Estructuras de Control: when
Conceptos b谩sicos de Kotlin
Bucles: While y Do While
Ciclos
Null-Safety en Kotlin
Valores nulos, Double bang y c贸mo solucionarlos.
Try Catch
Elvis operator
Collections en Kotlin
Listas
Como ordenar listas con las funciones que tiene Kotlin
Maps
Sets
Libera el potencial de las funciones
驴Qu茅 son las funciones?
Funciones y funciones de extensi贸n
Tipos de par谩metros en las funciones
Lambdas
High Order functions
Scope functions
Let
With
Run
Apply
Also
Proyecto: Bola 8 m谩gica
Creando el men煤 de nuestra bola m谩gica
Contestando aleatoriamente
驴C贸mo continuar tu camino en Kotlin?
You don't have access to this class
Keep learning! Join and start boosting your career
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.
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.
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.
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.
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.
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.
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.
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.
Immutability: Whenever possible, work with immutable collections. This ensures data integrity and consistency.
Predefined functions: Kotlin offers a multitude of predefined functions to manipulate collections. Consider using them before developing your own solutions.
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
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
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.
Want to see more contributions, questions and answers from the community?