Comment créer des Maps dans Dart
Comment créer des Maps dans Dart
-
Objectifs
- Comprendre le concept de Map en Dart.
- Apprendre à déclarer, utiliser et manipuler des Maps en Dart.
- Explorer les différentes propriétés et fonctions disponibles pour travailler avec les Maps.
-
Présentation
- En Dart, les termes « dictionnaire » et « map » désignent la même chose. Une Map en Dart est une structure de données qui associe des clés uniques à des valeurs. Cette structure est souvent appelée « dictionnaire » dans d’autres langages de programmation, notamment dans le domaine de l’informatique. Ainsi, en Dart, les deux termes sont utilisés de manière interchangeable pour désigner une structure de données de type « Map ».
- Les dictionnaires sont des objets qui associent des clés et des valeurs. Les clés et les valeurs peuvent être n’importe quel type de donnée. Chaque clé n’apparaît qu’une seule fois dans le dictionnaire, mais vous pouvez utiliser la même valeur plusieurs fois pour plusieurs clés.
- Les Maps en Dart sont des collections d’objets qui associent des clés uniques à des valeurs. Chaque clé est associée à une valeur spécifique, ce qui permet un accès rapide et efficace aux données. Les Maps sont utilisées pour stocker des données structurées de manière associative.
- En Dart, les dictionnaires sont appelés « maps« . Une map est une collection d’éléments qui associe des clés à des valeurs. Chaque élément d’une map est constitué d’une paire clé-valeur. Les maps sont couramment utilisés pour stocker et récupérer des données associées à des clés.
-
Création et initialisation d’une Map (dictionnaire) en Dart
- Pour créer une map en Dart, vous pouvez utiliser la notation littérale ou le constructeur Map.
-
Création d’une Map en Dart
-
La notation littérale
- Pour déclarer une carte à l’aide de littéraux de carte, vous devez placer les paires clé-valeur entre une paire d’accolades «
{}
» . - La notation littérale est la méthode la plus courante pour créer une map :
-
Utilisation d’un constructeur de Map (
Constructeur Dart Map<K, V>()
) - Pour créer une map (dictionnaire) en Dart en utilisant le constructeur Map, vous spécifiez les paires clé-valeur à l’intérieur de ce constructeur. Voici comment vous pouvez créer un map en utilisant le constructeur Map :
- Dans ces exemples :
- Map<String, int> notes crée une map vide où les clés sont de type String et les valeurs sont de type int.
- Map<String, String> capitales crée une map avec des paires clé-valeur initiales à partir d’un autre map.
// Création d'une map vide
Map<String, int> notes = {};
// Création d'une map avec des paires clé-valeur
Map<String, String> capitales = {
'France': 'Paris',
'États-Unis': 'Washington, D.C.',
'Allemagne': 'Berlin',
};
// Création d'un map vide
Map<String, int> notes = Map<String, int>();
// Création d'un map avec des paires clé-valeur
Map<String, String> capitales = Map<String, String>.from({
'France': 'Paris',
'États-Unis': 'Washington, D.C.',
'Allemagne': 'Berlin',
});
Initialisation d’une map (dictionnaire)
- En Dart, vous pouvez initialiser une map (dictionnaire) de deux manières principales : à la déclaration (lorsque vous créez la map) ou après la déclaration (lorsque la map est déjà créé). Voici comment cela fonctionne pour chaque cas :
-
Initialisation à la déclaration :
- Lorsque vous créez une map, vous pouvez le remplir avec des paires clé-valeur dès le départ en utilisant la notation littérale de map. Voici un exemple :
- Dans cet exemple, la map ages est créé et initialisé avec des paires clé-valeur au moment de la déclaration.
-
Initialisation après la déclaration :
- Vous pouvez créer une map vide d’abord, puis ajouter des paires clé-valeur ultérieurement. Voici comment cela fonctionne :
- Dans cet exemple, la map ages est créé vide, puis des paires clé-valeur sont ajoutées après la déclaration.
// Initialisation à la déclaration
Map ages = {
'Alice': 30,
'Bob': 25,
'Charlie': 40,
};
// Création d'une map vide
Map ages = Map();
// Initialisation après la déclaration
ages['Alice'] = 30;
ages['Bob'] = 25;
ages['Charlie'] = 40;
Vous pouvez choisir la méthode qui convient le mieux à votre situation. L’initialisation à la déclaration est pratique lorsque vous avez déjà les données disponibles et que vous voulez les ajouter au map dès le départ. L’initialisation après la déclaration est utile lorsque vous devez construire la map progressivement ou lorsque vous n’avez pas toutes les données au moment de la déclaration initiale.
Activité : Création de Maps en Dart
-
Objectif :
- Apprendre à créer des Maps en Dart à l’aide de différentes méthodes.
-
Instructions :
- Créez une application Dart vide.
- Dans votre fichier principal (par exemple, main.dart), créez plusieurs Maps en utilisant différentes méthodes de déclaration.
- Utilisez à la fois des littéraux de map et le constructeur de map pour créer vos Maps.
- Pour chaque Map que vous créez, ajoutez au moins trois paires clé-valeur.
- Imprimez chaque Map pour vérifier son contenu et sa structure.
-
Exemple de code :
-
Résultat attendu :
void main() {
// Création d'une Map à l'aide de littéraux de map
Map ages = {'John': 30, 'Alice': 25, 'Bob': 35};
// Création d'une Map à l'aide du constructeur de map
Map countries = Map();
countries['France'] = 'Paris';
countries['Germany'] = 'Berlin';
countries['Spain'] = 'Madrid';
// Affichage des Maps
print('Map des âges: $ages');
print('Map des pays: $countries');
}
Map des âges: {John: 30, Alice: 25, Bob: 35}
Map des pays: {France: Paris, Germany: Berlin, Spain: Madrid}
Accéder à la valeur associée à une clé dans une map
- En Dart, vous pouvez accéder à la valeur associée à une clé dans une map en utilisant la clé entre crochets ([]). Voici comment cela fonctionne, avec des exemples supplémentaires :
-
Accès à la valeur d’une clé:
- Pour accéder à la valeur associée à une clé dans une map, utilisez la clé comme index entre crochets :
Map ages = {
'Alice': 30,
'Bob': 25,
'Charlie': 40,
};
int ageAlice = ages['Alice']; // Accède à la valeur associée à la clé 'Alice'
print("L'âge d'Alice est $ageAlice.");
Vérification de l’existence de la clé :
- Avant d’accéder à la valeur d’une clé, il est recommandé de vérifier si la clé existe dans le map. Vous pouvez le faire en utilisant la méthode containsKey() :
if (ages.containsKey('Bob')) {
int ageBob = ages['Bob'];
print("L'âge de Bob est $ageBob.");
} else {
print("La clé 'Bob' n'existe pas dans la map.");
}
Valeur par défaut en cas d’absence de clé
- Vous pouvez également spécifier une valeur par défaut à retourner si la clé n’existe pas dans la map en utilisant l’opérateur de récupération (??) :
int ageDavid = ages['David'] ?? 0; // Si 'David' n'existe pas, renvoie 0
print("L'âge de David est $ageDavid.");
Activité : Accès aux valeurs dans une Map
- Ouvrez votre éditeur de code Dart.
- Créez un nouveau fichier Dart.
- Dans ce fichier, créez une Map avec quelques paires clé-valeur. Par exemple :
void main() {
Map scores = {
'Alice': 95,
'Bob': 87,
'Carol': 91,
};
}
void main() {
Map scores = {
'Alice': 95,
'Bob': 87,
'Carol': 91,
};
String nom = 'Bob';
int score = scores[nom];
print('Le score de $nom est $score.');
}
Modification et Suppression des éléments d’une Map (dictionnaire)
- Vous pouvez modifier les éléments d’une map (dictionnaire) en Dart en utilisant plusieurs méthodes. Voici quelques-unes des méthodes couramment utilisées pour effectuer des modifications dans une map :
- Supposons que vous ayez une map appelé personnes avec des informations sur les âges des personnes :
Map<String, int> personnes = {
'Alice': 30,
'Bob': 25,
'Charlie': 40,
};
-
Modification directe par clé :
- Pour modifier directement la valeur associée à une clé dans une map, vous utilisez la clé pour accéder à l’élément et lui attribuez une nouvelle valeur :
- Après cette opération, l’âge de Bob dans la map est mis à jour pour être de 26.
-
Utilisation de la méthode
update()
: - La méthode
update()
vous permet de mettre à jour la valeur associée à une clé en utilisant une fonction qui prend l’ancienne valeur comme argument et renvoie la nouvelle valeur. Par exemple, vous pouvez ajouter 1 à l’âge de Charlie comme ceci : - Après cette opération, l’âge de Charlie dans la map sera de 41.
-
Utilisation de la méthode putIfAbsent() :
- La méthode
putIfAbsent()
permet de définir une valeur pour une clé si elle n’existe pas encore dans la map. Par exemple, si vous souhaitez ajouter une personne nommée David avec un âge de 35, vous pouvez le faire comme suit : - Si la clé ‘David’ n’existait pas, elle sera ajoutée avec l’âge 35.
-
Suppression d’éléments :
- Pour supprimer un élément (une paire clé-valeur) d’une map, vous pouvez utiliser la méthode
remove()
en spécifiant la clé de l’élément à supprimer : - Ces méthodes vous permettent de modifier les éléments d’une map selon vos besoins. Que ce soit pour ajouter, mettre à jour ou supprimer des éléments, les maps en Dart offrent de nombreuses options pour gérer les données associées à des clés.
personnes['Bob'] = 26; // Modification de l'âge de Bob
personnes.update('Charlie', (ancienAge) => ancienAge + 1);
personnes.putIfAbsent('David', () => 35);
personnes.remove('Alice'); // Supprime la paire associée à la clé 'Alice'