El mapa es una colección de pares clave-valor. En otras palabras, es similar al diccionario. Las claves siempre son únicas, mientras que los valores no necesitan ser únicos. Los pares clave-valor pueden tener cualquier tipo de datos. Sin embargo, el tipo de datos que se usa una vez para cualquier clave y valor debe ser coherente en todo momento. Los mapas se clasifican en dos tipos: mutables e inmutables . Por defecto, Scala usa Map inmutable. Para usar el mapa mutable, debemos importar la clase scala.collection.mutable.Map explícitamente.
Los mapas se pueden crear de diferentes maneras según nuestros requisitos y la naturaleza del mapa. Tenemos una sintaxis diferente dependiendo de si el Mapa es mutable o inmutable.
Sintaxis:
// Immutable variable = Map(key_1 -> value_1, key_2 -> value_2, key_3 -> value_3, ....) // Mutable variable = scala.collection.mutable.Map(key_1 -> value_1, key_2 -> value_2, key_3 -> value_3, ....)
Hay tres operaciones básicas que podemos realizar sobre un Mapa:
- claves: en Scala Map, este método devuelve un iterable que contiene cada clave en el mapa.
- valores: el método de valor devuelve un iterable que contiene cada valor en el mapa de Scala.
- isEmpty: este método de mapa de Scala devuelve verdadero si el mapa está vacío; de lo contrario, devuelve falso.
Se puede acceder a los valores utilizando el nombre y la clave de la variable Map.
Ejemplo:
// Scala map program of // Accessing Values Using Keys // Creating object object GFG { // Main method def main(args : Array[String]) { val mapIm = Map( "Ajay" - > 30 , "Bhavesh" - > 20 , "Charlie" - > 50 ) // Accessing score of Ajay val ajay = mapIm( "Ajay" ) println(ajay) } } |
Producción:
30
Si intentamos acceder al valor asociado con la clave «Juan», obtendremos un error porque dicha clave no está presente en el Mapa. Por lo tanto, se recomienda usar la función contains() al acceder a cualquier valor usando la tecla.
Esta función busca la clave en el Mapa. Si la clave está presente, devuelve verdadero, de lo contrario, falso.
// Scala map program of // Accessing Values Using // Keys by contains() function // Creating object object GFG { // Main methode def main(args : Array[String]) { val mapIm = Map( "Ajay" - > 30 , "Bhavesh" - > 20 , "Charlie" - > 50 ) // the key check in the Map val ajay = if (mapIm.contains( "Ajay" )) mapIm( "Ajay" ) else 0 val john = if (mapIm.contains( "John" )) mapIm( "John" ) else 0 println( "Ajay:" + ajay) println( "John:" + john) } } |
Producción:
Ajay:30 John:0
Si intentamos actualizar el valor de un mapa inmutable, Scala genera un error. Por otro lado, se acepta cualquier cambio realizado en el valor de cualquier clave en caso de Mapas mutables.
Ejemplo:
Actualización del mapa inmutable:
// Scala map program of // Updating the values // in immutable map // Creating an object object GFG { // Main method def main(args : Array[String]) { val mapIm = Map( "Ajay" - > 30 , "Bhavesh" - > 20 , "Charlie" - > 50 ) println(mapIm) //Updating mapIm( "Ajay" ) = 10 println(mapIm) } } |
Producción:
error: la actualización del valor no es miembro de scala.collection.immutable.Map[String, Int]
Actualización del mapa mutable:
// Scala map program of // Updating the values // in mutable map // Creating Object object GFG { // Main method def main(args : Array[String]) { val mapMut = scala.collection.mutable.Map( "Ajay" - > 30 , "Bhavesh" - > 20 , "Charlie" - > 50 ) println( "Before Updating: " + mapMut) // Updating mapMut( "Ajay" ) = 10 println( "After Updating: " + mapMut) } } |
Producción:
Antes de actualizar: Mapa (Ajay -> 30, Charlie -> 50, Bhavesh -> 20)
Después de actualizar: Mapa (Ajay -> 10, Charlie -> 50, Bhavesh -> 20)
Podemos insertar nuevos pares clave-valor en un mapa mutable usando el operador += seguido de nuevos pares para agregar o actualizar.
Ejemplo:
// Scala map program of // Adding new key-value pair // Creating object object GFG { // Main method def main(args : Array[String]) { val mapMut = scala.collection.mutable.Map( "Ajay" - > 30 , "Bhavesh" - > 20 , "Charlie" - > 50 ) println( "Before Adding: " +mapMut) // Adding a new key "Dinesh" and // updating an existing key "Ajay" mapMut + = ( "Ajay" - > 10 , "Dinesh" - > 60 ) println( "After Adding: " +mapMut) } } |
Producción:
Antes de agregar: Mapa (Ajay -> 30, Charlie -> 50, Bhavesh -> 20)
Después de agregar: Mapa (Ajay -> 10, Dinesh -> 60, Charlie -> 50, Bhavesh -> 20)
Eliminar un par clave-valor es similar a agregar una nueva entrada. La diferencia es que en lugar de += usamos el operador -= seguido de las claves que se eliminarán.
Ejemplo:
// Scala map program of // Deleting new key-value pair // Creating object object GFG { // Main method def main(args : Array[String]) { val mapMut = scala.collection.mutable.Map( "Ajay" - > 30 , "Bhavesh" - > 20 , "Charlie" - > 50 ) println( "Before Deleting: " +mapMut) // Deleting key-value pairs with // keys "Ajay" and "Charlie" mapMut - = ( "Ajay" , "Charlie" ) println( "After Deleting: " + mapMut) } } |
Producción:
Antes de eliminar: Mapa (Ajay -> 30, Charlie -> 50, Bhavesh -> 20)
Después de eliminar: Mapa (Bhavesh -> 20)
El par clave-valor corresponde a una tupla con dos elementos. Por lo tanto, mientras se realiza la iteración, la variable del bucle debe ser un par.
Para comprender la sintaxis y el funcionamiento de los bucles en Scala, consulte: Bucles|
Ejemplo de Scala:
// Scala map program of // Iteration in a Map // Creating object object GFG { // Main method def main(args : Array[String]) { val mapMut = scala.collection.mutable.Map( "Ajay" - > 30 , "Bhavesh" - > 20 , "Charlie" - > 50 ) // (k, v) is a tuple with two elements for ((k, v) < - mapMut) { //where k is key and v is value print( "Key:" +k+ ", " ) println( "Value:" +v) } } } |
Producción:
Key:Ajay, Value:30 Key:Charlie, Value:50 Key:Bhavesh, Value:20
En Scala Map, también podemos crear un Mapa vacío y luego agregarle elementos.
Ejemplo:
// Scala map program of // Empty Map // Creating object object GFG { // Main method def main(args : Array[String]) { // Creation of Map having key-value // pairs of type (String, Int) val mapMut = scala.collection.mutable.Map[String, Int]() println( "Empty Map: " + mapMut) // Adding new entry mapMut + = ( "Charlie" - > 50 ) println( "New Entry: " + mapMut) } } |
Producción:
Empty Map: Map() New Entry: Map(Charlie -> 50)
Publicación traducida automáticamente
Artículo escrito por MohammadKhalid y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA