Guide : Créer et Manipuler une Liste en VB.Net
En VB.Net, une liste est une collection dynamique qui permet de stocker des objets, de les manipuler facilement, et d’ajouter ou supprimer des éléments sans avoir besoin de redimensionner la structure. Les listes sont définies dans l’espace de noms System.Collections.Generic
avec la classe List(Of T)
.
1. Déclaration d’une Liste
La classe List(Of T)
nécessite un type générique (T
) qui définit le type des éléments dans la liste.
Exemple de déclaration :
Dim maListe As New List(Of String)
Ici, maListe
est une liste de chaînes (String
).
2. Ajout d’Éléments à une Liste
Utilisez la méthode Add
pour insérer un élément dans la liste.
Exemple :
Dim fruits As New List(Of String)
fruits.Add("Pomme")
fruits.Add("Banane")
fruits.Add("Orange")
Pour ajouter plusieurs éléments :
fruits.AddRange(New String() {"Cerise", "Fraise"})
3. Accéder aux Éléments d’une Liste
Les éléments d’une liste sont accessibles via leur index (commençant à 0).
Exemple :
Dim fruits As New List(Of String) From {"Pomme", "Banane", "Orange"}
Console.WriteLine(fruits(0)) ' Affiche : Pomme
Console.WriteLine(fruits(2)) ' Affiche : Orange
4. Parcourir une Liste
Avec une boucle For
:
Dim fruits As New List(Of String) From {"Pomme", "Banane", "Orange"}
For i As Integer = 0 To fruits.Count - 1
Console.WriteLine(fruits(i))
Next
Avec une boucle For Each
:
Dim fruits As New List(Of String) From {"Pomme", "Banane", "Orange"}
For Each fruit As String In fruits
Console.WriteLine(fruit)
Next
5. Modifier une Liste
Mettre à jour un élément :
Dim fruits As New List(Of String) From {"Pomme", "Banane", "Orange"}
fruits(1) = "Mangue" ' Remplace "Banane" par "Mangue"
Console.WriteLine(fruits(1)) ' Affiche : Mangue
Supprimer un élément :
- Par valeur :
fruits.Remove("Orange")
- Par index :
fruits.RemoveAt(0) ' Supprime "Pomme"
- Tout effacer :
fruits.Clear()
6. Vérifier l’Existence d’un Élément
Rechercher un élément :
If fruits.Contains("Pomme") Then
Console.WriteLine("Pomme est dans la liste.")
End If
Trouver l’index d’un élément :
Dim index As Integer = fruits.IndexOf("Orange")
If index <> -1 Then
Console.WriteLine("Orange trouvé à l'index " & index)
Else
Console.WriteLine("Orange n'est pas dans la liste.")
End If
7. Trier et Inverser une Liste
Trier une liste :
Dim fruits As New List(Of String) From {"Orange", "Pomme", "Banane"}
fruits.Sort()
For Each fruit As String In fruits
Console.WriteLine(fruit) ' Affiche : Banane, Orange, Pomme
Next
Inverser l’ordre des éléments :
fruits.Reverse()
For Each fruit As String In fruits
Console.WriteLine(fruit) ' Affiche : Pomme, Orange, Banane
Next
8. Utiliser des Objets dans une Liste
Les listes peuvent contenir des objets complexes en définissant leur type.
Définir une classe :
Class Personne
Public Property Nom As String
Public Property Age As Integer
End Class
Créer une liste d’objets :
Dim personnes As New List(Of Personne) From {
New Personne With {.Nom = "Jean", .Age = 30},
New Personne With {.Nom = "Marie", .Age = 25}
}
For Each personne As Personne In personnes
Console.WriteLine($"{personne.Nom} a {personne.Age} ans.")
Next
9. Utiliser LINQ pour Manipuler les Listes
Le langage intégré aux requêtes (LINQ) permet d’interroger et de manipuler facilement des listes.
Filtrer une liste :
Dim fruits As New List(Of String) From {"Pomme", "Banane", "Orange", "Fraise"}
Dim resultats = From fruit In fruits Where fruit.StartsWith("P") Select fruit
For Each fruit As String In resultats
Console.WriteLine(fruit) ' Affiche : Pomme
Next
Trouver un élément :
Dim fruit = fruits.FirstOrDefault(Function(f) f = "Banane")
Console.WriteLine(fruit) ' Affiche : Banane
10. Liste vs Tableau
Aspect | Liste | Tableau |
---|---|---|
Taille | Dynamique | Fixe |
Ajout/Suppression | Facile (Add , Remove ) | Impossible |
Performances | Légèrement plus lentes | Plus rapides |
Flexibilité | Très flexible | Limité |
Exemple Complet : Gestionnaire de Tâches
Module Module1
Sub Main()
Dim taches As New List(Of String)
While True
Dim choix As String = InputBox("1. Ajouter une tâche" & vbCrLf &
"2. Afficher les tâches" & vbCrLf &
"3. Supprimer une tâche" & vbCrLf &
"4. Quitter")
Select Case choix
Case "1"
Dim tache As String = InputBox("Entrez une nouvelle tâche :")
taches.Add(tache)
Case "2"
Dim listeTaches As String = String.Join(vbCrLf, taches)
MsgBox("Liste des tâches :" & vbCrLf & listeTaches)
Case "3"
Dim tache As String = InputBox("Entrez la tâche à supprimer :")
If taches.Remove(tache) Then
MsgBox("Tâche supprimée.")
Else
MsgBox("Tâche introuvable.")
End If
Case "4"
Exit While
Case Else
MsgBox("Choix invalide.")
End Select
End While
End Sub
End Module
Dans VB.Net, un dictionnaire est une collection de paires clé-valeur, où chaque clé est unique et correspond à une valeur spécifique. Les dictionnaires sont très polyvalents et font partie de l’ System.Collections.Generic
espace de noms, en utilisant la Dictionary(Of TKey, TValue)
classe.
1. Déclaration et initialisation d’un dictionnaire
Déclaration de base :
Dim myDictionary As New Dictionary(Of String, String)
Ici:
String
est le type de la clé.String
est le type de la valeur.
Déclaration avec valeurs initiales :
Dim myDictionary As New Dictionary(Of String, String) From {
{"Key1", "Value1"},
{"Key2", "Value2"},
{"Key3", "Value3"}
}
2. Ajout de paires clé-valeur
Utilisez la Add
méthode pour ajouter de nouvelles paires clé-valeur.
Exemple :
Dim capitals As New Dictionary(Of String, String)
capitals.Add("France", "Paris")
capitals.Add("Spain", "Madrid")
capitals.Add("Italy", "Rome")
Vous pouvez également utiliser la syntaxe de l’indexeur pour ajouter ou mettre à jour des éléments :
capitals("Germany") = "Berlin" ' Adds a new key-value pair.
capitals("France") = "Marseille" ' Updates the value for the key "France".
3. Accéder aux valeurs
Accédez aux valeurs à l’aide de leurs clés.
Exemple :
Dim capitals As New Dictionary(Of String, String) From {
{"France", "Paris"},
{"Spain", "Madrid"}
}
Console.WriteLine(capitals("France")) ' Output: Paris
Pour accéder en toute sécurité à une valeur sans risquer un KeyNotFoundException
, utilisez TryGetValue
:
Dim value As String
If capitals.TryGetValue("Italy", value) Then
Console.WriteLine(value) ' If found, output the value.
Else
Console.WriteLine("Key not found.")
End If
4. Suppression des paires clé-valeur
Utilisez la Remove
méthode pour supprimer un élément par sa clé.
capitals.Remove("Spain") ' Removes the key "Spain" and its value.
5. Vérification d’une clé ou d’une valeur
- Vérifier si une clé existe :
If capitals.ContainsKey("France") Then
Console.WriteLine("France is in the dictionary.")
End If
- Vérifier si une valeur existe :
If capitals.ContainsValue("Paris") Then
Console.WriteLine("Paris is a capital.")
End If
6. Itération sur un dictionnaire
Vous pouvez parcourir un dictionnaire en utilisant For Each
.
Exemple :
Dim capitals As New Dictionary(Of String, String) From {
{"France", "Paris"},
{"Spain", "Madrid"},
{"Italy", "Rome"}
}
For Each kvp As KeyValuePair(Of String, String) In capitals
Console.WriteLine($"Country: {kvp.Key}, Capital: {kvp.Value}")
Next
7. Fonctions avancées du dictionnaire
Compter les articles :
Console.WriteLine("Total items: " & capitals.Count)
Effacer tous les éléments :
capitals.Clear() ' Removes all key-value pairs.
Collections de clés et de valeurs :
Vous pouvez obtenir une liste de toutes les clés ou valeurs :
Dim keys As Dictionary(Of String, String).KeyCollection = capitals.Keys
Dim values As Dictionary(Of String, String).ValueCollection = capitals.Values
For Each key As String In keys
Console.WriteLine("Key: " & key)
Next
For Each value As String In values
Console.WriteLine("Value: " & value)
Next
8. Exemple : Gestion des notes des étudiants
Voici un exemple complet utilisant un dictionnaire pour gérer les notes des étudiants.
Module Module1
Sub Main()
Dim studentGrades As New Dictionary(Of String, Integer)
' Adding students
studentGrades.Add("Alice", 85)
studentGrades.Add("Bob", 90)
studentGrades.Add("Charlie", 78)
' Displaying all students and their grades
Console.WriteLine("Student Grades:")
For Each kvp As KeyValuePair(Of String, Integer) In studentGrades
Console.WriteLine($"{kvp.Key}: {kvp.Value}")
Next
' Updating a grade
studentGrades("Alice") = 88
Console.WriteLine($"Updated grade for Alice: {studentGrades("Alice")}")
' Removing a student
studentGrades.Remove("Charlie")
' Checking if a student exists
If studentGrades.ContainsKey("Bob") Then
Console.WriteLine("Bob is in the dictionary.")
End If
' Final list of students
Console.WriteLine("Final Student Grades:")
For Each kvp As KeyValuePair(Of String, Integer) In studentGrades
Console.WriteLine($"{kvp.Key}: {kvp.Value}")
Next
End Sub
End Module
Comparaison : Dictionnaire vs Liste
Fonctionnalité | Dictionnaire | Liste |
---|---|---|
Paire clé-valeur | Oui | Non |
Efficacité de la recherche | Rapide pour les clés | Recherche linéaire requise |
Doublons | Les clés doivent être uniques ; les valeurs peuvent être des doublons. | Doublons autorisés |
Commande | Pas d’ordre spécifique (mais l’ordre d’insertion est conservé). | Conserve les ins |
Résumé
- Un dictionnaire est un
- Utilisez des dictionnaires lorsque vous avez besoin de recherches rapides b
- Combiner avec
For Each
,TryGetValue
, etContainsKey
pour sa