Intro To Maps In Dart – Dart Programming Maps Guide

Haris Bin Nasir Avatar

·

·

In Dart, a Map is a collection of key-value pairs, where each key is associated with a specific value. Maps in Dart are useful when you need to store and retrieve data based on unique keys, such as storing a list of items with their prices or maintaining a dictionary of words with their definitions. Dart provides a flexible and powerful Map class that allows you to work with key-value pairs efficiently.

For further information on detailed topics of Dart, click here.

1. Creating a Map

You can create a Map in Dart using the Map constructor or by using map literals.

Example 1: Creating a Map with Literal Notation
void main() {
  Map<String, int> studentGrades = {
    'Alice': 85,
    'Bob': 92,
    'Charlie': 78,
  };
  
  print(studentGrades);  // Output: {Alice: 85, Bob: 92, Charlie: 78}
}

In this example, the studentGrades map stores the grades of students, where each student’s name is the key and their grade is the value.

Example 2: Creating a Map Using the Map Constructor
void main() {
  Map<String, String> capitals = Map();
  capitals['USA'] = 'Washington, D.C.';
  capitals['France'] = 'Paris';
  capitals['Japan'] = 'Tokyo';
  
  print(capitals);  // Output: {USA: Washington, D.C., France: Paris, Japan: Tokyo}
}

In this example, the capitals map is created using the Map constructor, and values are added using square bracket notation.

2. Accessing Map Elements

You can access values in a Map by using their corresponding keys.

Example 1: Accessing Values Using Keys
void main() {
  Map<String, int> studentGrades = {
    'Alice': 85,
    'Bob': 92,
    'Charlie': 78,
  };
  
  print('Alice\'s grade: ${studentGrades['Alice']}');  // Output: Alice's grade: 85
}

In this example, we retrieve Alice’s grade by using her name as the key.

Example 2: Using the containsKey Method
void main() {
  Map<String, String> capitals = {
    'USA': 'Washington, D.C.',
    'France': 'Paris',
    'Japan': 'Tokyo',
  };
  
  if (capitals.containsKey('USA')) {
    print('Capital of USA: ${capitals['USA']}');  // Output: Capital of USA: Washington, D.C.
  }
}

The containsKey method checks if a key exists in the map before accessing the value associated with that key.

3. Modifying Map Elements

You can modify the values in a Map by using their keys or add new key-value pairs to the map.

Example 1: Updating a Value
void main() {
  Map<String, int> studentGrades = {
    'Alice': 85,
    'Bob': 92,
    'Charlie': 78,
  };
  
  studentGrades['Alice'] = 90;  // Update Alice's grade
  print(studentGrades);  // Output: {Alice: 90, Bob: 92, Charlie: 78}
}

In this example, you update Alice’s grade from 85 to 90 by reassigning the value associated with her key.

Example 2: Adding a New Key-Value Pair
void main() {
  Map<String, String> capitals = {
    'USA': 'Washington, D.C.',
    'France': 'Paris',
  };
  
  capitals['Japan'] = 'Tokyo';  // Add a new key-value pair
  print(capitals);  // Output: {USA: Washington, D.C., France: Paris, Japan: Tokyo}
}

Here, a new key-value pair is added to the capitals map, associating Japan with Tokyo.

4. Removing Elements from a Map

You can remove elements from a Map using methods like remove and clear.

Example 1: Removing a Specific Key-Value Pair
void main() {
  Map<String, int> studentGrades = {
    'Alice': 85,
    'Bob': 92,
    'Charlie': 78,
  };
  
  studentGrades.remove('Charlie');  // Remove Charlie's grade
  print(studentGrades);  // Output: {Alice: 85, Bob: 92}
}

In this example, the remove method removes the key-value pair associated with the key 'Charlie'.

Example 2: Clearing All Elements
void main() {
  Map<String, String> capitals = {
    'USA': 'Washington, D.C.',
    'France': 'Paris',
    'Japan': 'Tokyo',
  };
  
  capitals.clear();  // Clear all key-value pairs
  print(capitals);  // Output: {}
}

The clear method removes all key-value pairs from the map, leaving it empty.

5. Iterating Over a Map

You can iterate over the keys and values in a Map using loops, allowing you to perform actions on each element.

Example 1: Iterating Over Keys and Values
void main() {
  Map<String, int> studentGrades = {
    'Alice': 85,
    'Bob': 92,
    'Charlie': 78,
  };
  
  studentGrades.forEach((key, value) {
    print('$key has a grade of $value');
  });
}
// Output:
// Alice has a grade of 85
// Bob has a grade of 92
// Charlie has a grade of 78

The forEach method is used here to iterate over the map and print each key-value pair.

Example 2: Iterating Using a For Loop
void main() {
  Map<String, String> capitals = {
    'USA': 'Washington, D.C.',
    'France': 'Paris',
    'Japan': 'Tokyo',
  };
  
  for (String country in capitals.keys) {
    print('The capital of $country is ${capitals[country]}');
  }
}
// Output:
// The capital of USA is Washington, D.C.
// The capital of France is Paris
// The capital of Japan is Tokyo

In this example, a for loop is used to iterate over the keys of the map, and the corresponding values are accessed within the loop.

6. Working with Null Values in Maps

Dart maps can handle null values for both keys and values. However, it’s important to handle null carefully to avoid errors.

Example 1: Checking for Null Values
void main() {
  Map<String, String?> employeePositions = {
    'Alice': 'Manager',
    'Bob': null,
  };
  
  print(employeePositions['Bob'] ?? 'Position not assigned');  // Output: Position not assigned
}

In this example, the ?? operator provides a fallback value in case the key 'Bob' has a null value.

Example 2: Handling Null Keys
void main() {
  Map<String?, int> grades = {
    'Alice': 85,
    null: 90,
  };
  
  if (grades.containsKey(null)) {
    print('The map contains a null key');  // Output: The map contains a null key
  }
}

Here, the map contains a null key, and the containsKey method checks for its existence.

Conclusion

Maps in Dart provide a flexible and efficient way to store and retrieve key-value pairs. Whether you’re creating a simple dictionary, updating values, or iterating through data, understanding how to work with maps will enhance your ability to manage collections of data in Dart. By mastering these techniques, you can create more powerful and versatile Dart applications.

Happy Coding…!!!

Leave a Reply

Your email address will not be published. Required fields are marked *