Scala Map Methods with Examples

1. Introduction

Maps in Scala are collections of key-value pairs, where each key maps to a value. Scala provides both mutable and immutable versions of Maps, with immutable being the default type. This blog post will divw into various methods available in Scala Maps, demonstrating how to effectively use and manipulate these collections.

Scala - Map Methods

Scala Map offer a wide range of methods for manipulating key-value pairs:

- get: Retrieves the value associated with a given key.

- getOrElse: Retrieves the value for a key, or a default value if the key is not found.

- ++: Adds multiple key-value pairs to the map.

- --: Removes keys from the map.

- keys: Returns all keys in the map.

- values: Returns all values in the map.

- isEmpty: Checks if the map is empty.

- contains: Checks if a key is present in the map.

- updated: Creates a new map by updating an entry.

- mapValues: Transforms the values in the map.

- foreach: Iterates over each key-value pair in the map.

- size: Returns the number of key-value pairs in the map.

2. Program Steps

1. Create an example map.

2. Apply various map methods and store or print the results.

3. Execute the code to showcase each method's functionality.

3. Code Program

object MapMethodsDemo extends App {
  val myMap: Map[String, Int] = Map("apple" -> 1, "banana" -> 2, "cherry" -> 3)

  // Get a value
  println(s"Value for 'apple': ${myMap.get("apple")}")

  // Get a value with a default
  println(s"Value for 'orange' or default 0: ${myMap.getOrElse("orange", 0)}")

  // Add key-value pairs
  val newMap = myMap ++ Map("date" -> 4, "elderberry" -> 5)
  println(s"New map with added elements: $newMap")

  // Remove keys
  val reducedMap = myMap -- List("apple", "banana")
  println(s"Map after removing keys: $reducedMap")

  // Get all keys
  println(s"Keys: ${myMap.keys}")

  // Get all values
  println(s"Values: ${myMap.values}")

  // Check if map is empty
  println(s"Is the map empty? ${myMap.isEmpty}")

  // Check if map contains a key
  println(s"Does the map contain 'banana'? ${myMap.contains("banana")}")

  // Update a map
  val updatedMap = myMap.updated("cherry", 5)
  println(s"Map with updated value: $updatedMap")

  // Transform values
  val doubledValuesMap = myMap.mapValues(_ * 2)
  println(s"Map with doubled values: $doubledValuesMap")

  // Iterate over map
  print("Map iteration: ")
  myMap.foreach { case (key, value) => print(s"($key -> $value) ") }

  // Get map size
  println(s"\nMap size: ${myMap.size}")
}

Output:

Value for 'apple': Some(1)
Value for 'orange' or default 0: 0
New map with added elements: Map(apple -> 1, banana -> 2, cherry -> 3, date -> 4, elderberry -> 5)
Map after removing keys: Map(cherry -> 3)
Keys: Set(apple, banana, cherry)
Values: Iterable(1, 2, 3)
Is the map empty? false
Does the map contain 'banana'? true
Map with updated value: Map(apple -> 1, banana -> 2, cherry -> 5)
Map with doubled values: Map(apple -> 2, banana -> 4, cherry -> 6)
Map iteration: (apple -> 1) (banana -> 2) (cherry -> 3)
Map size: 3

Explanation:

1. myMap.get("apple") retrieves the value associated with the key "apple".

2. myMap.getOrElse("orange", 0) provides a default value if the key is not found.

3. myMap ++ Map(...) demonstrates adding multiple key-value pairs.

4. myMap -- List(...) shows how to remove keys from the map.

5. myMap.keys and myMap.values list all keys and values in the map, respectively.

6. myMap.isEmpty checks if the map is empty.

7. myMap.contains("banana") verifies the presence of a key.

8. myMap.updated("cherry", 5) updates the value for a specific key.

9. myMap.mapValues(_ * 2) applies a function to all values in the map.

10. myMap.foreach iterates over each key-value pair.

11. myMap.size returns the number of elements in the map.


Comments