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?
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 15
Preguntas 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
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)
}
Para los que vienen de otro lenguaje como python los maps son diccionarios 😃
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
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.
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.
//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.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.