■ Qu'est ce qu'une Map.
Une Map se caractérise par une structure pour stocker dynamiquement une collection d'éléments.
Chaque élément d'une Map est constituée d'une clé et de une ou plusieurs valeurs.
L'ordre d'insertion des éléments n'est pas conservé (contrairement à une liste chaînée).
Un élément d'une Map peut être consulté, modifié ou supprimé directement à l'aide de sa clé.
Une Map ne peut pas être triée.
A titre d'exemple nous allons créer une mini base téléphonique (Nom + Téléphone)
■ Création d'une Map.
Avant de travailler avec une Map, il faut préalablement déclarer sa structure et bien sur la Map.
Création de la structure de notre exemple :
Code : Tout sélectionner
Structure User
User.s
Phone.s
EndStructure
Code : Tout sélectionner
NewMap Users.User()
AddMapElement(Map(), Cle) Ajoute un nouvel élément vide dans la Map() avec la Cle spécifiée.
Nous allons insérer l'utilisateur Larache ainsi que son téléphone 01.45.25.15.06
Code : Tout sélectionner
AddMapElement(Users(), "Larache")
Users()\User = "Larache"
Users()\Phone = "01.45.25.15.06"
Code : Tout sélectionner
AddMapElement(Users(), "Tricard")
Users()\User ="Tricard"
Users()\Phone = "04.39.69.25.10"
AddMapElement(Users(), "Olap")
Users()\User = "Olap"
Users()\Phone = "02.63.24.54.13"
AddMapElement(Users(), "Agile")
Users()\User = "Agile"
Users()\Phone = "06.31.22.92.92"
Code : Tout sélectionner
ForEach Users()
Debug Users()\User + " - " + Users()\Phone
Next
Contrairement à une Liste chaînée, il est possible d'accéder directement à un élément d'une Map.
Nous allons afficher le numéro de téléphone de l'utilisateur Olap.
Rappeler vous : Chaque élément d'une Map est associé à une clé unique.
Vous pouvez rechercher ce numéro de téléphone de deux manières:
Code : Tout sélectionner
Debug Users("Olap")\Phone
Code : Tout sélectionner
FindMapElement(Users(), "Olap")
Debug Users()\Phone
C'est très simple, il suffit d'ajouter à nouveau cet élément. Par exemple changer le téléphone de l'utilisateur Larache.
Code : Tout sélectionner
AddMapElement(Users(), "Larache")
Users()\User = "Larache"
Users()\Phone = "01.45.25.15.15"
DeleteMapElement(Map() [, Cle]) permet d'accéder et effacer un élément d'une Map. Nous allons supprimer l'utilisateur Larache.
Code : Tout sélectionner
DeleteMapElement(Users(), "Larache")
Si vous souhaitez supprimer un lot d'éléments répondant à un ou plusieurs critères conditionnels, alors dans ce cas vous passerez par une boucle ForEach .... next. Si l'élément en cours de lecture répond à vos critères, vous pouvez le supprimer avec la fonction DeleteMapElement() sans préciser la clé.
N'hésitez pas consulter l'aide sur les fonctionnalités liées aux Maps.
Code de synthése
Code : Tout sélectionner
;Déclaration de la structure d'un utilisateur
Structure User
User.s
Phone.s
EndStructure
;Déclaration de la Map
NewMap Users.User()
;Ajout de 4 utilisateurs
AddMapElement(Users(), "Larache")
Users()\User = "Larache"
Users()\Phone = "01.45.25.15.06"
AddMapElement(Users(), "Tricard")
Users()\User ="Tricard"
Users()\Phone = "04.39.69.25.10"
AddMapElement(Users(), "Olap")
Users()\User = "Olap"
Users()\Phone = "02.63.24.54.13"
AddMapElement(Users(), "Agile")
Users()\User = "Agile"
Users()\Phone = "06.31.22.92.92"
;Modification d'un numéro de téléphone de "larache"
AddMapElement(Users(), "Larache")
Users()\User = "Larache"
Users()\Phone = "01.45.25.15.15"
;Liste des utilisateurs.
Debug "# Liste des utlisateurs:"
ForEach Users()
Debug Users()\User + " - " + Users()\Phone
Next
;Suppression de l'utilisateur "Larache"
DeleteMapElement(Users(), "Larache")
;Liste de controle aprés suppression de "Larache"
Debug #CRLF$ + "# Liste des utlisateurs aprés suppression de Larache:"
ForEach Users()
Debug Users()\User + " - " + Users()\Phone
Next
;Chercher l'utilisateur "Olap"
FindMapElement(Users(), "Olap")
Debug #CRLF$ + "# Téléphone de l'utilisateur 'Olap' : " + Users()\Phone