Visual Basic .NET Language
Dictionnaires
Recherche…
Introduction
Un dictionnaire représente une collection de clés et de valeurs. Voir la classe Dictionnaire MSDN (Tkey, TValue) .
Traverser un dictionnaire et imprimer toutes les entrées
Chaque paire du dictionnaire est une instance de KeyValuePair
avec les mêmes paramètres de type que le dictionnaire. Lorsque vous parcourez le dictionnaire avec For Each
, chaque itération vous donnera l'une des paires clé-valeur stockées dans le dictionnaire.
For Each kvp As KeyValuePair(Of String, String) In currentDictionary
Console.WriteLine("{0}: {1}", kvp.Key, kvp.Value)
Next
Créer un dictionnaire rempli de valeurs
Dim extensions As New Dictionary(Of String, String) _
from { { "txt", "notepad" },
{ "bmp", "paint" },
{ "doc", "winword" } }
Cela crée un dictionnaire et le remplit immédiatement avec trois KeyValuePairs.
Vous pouvez également ajouter de nouvelles valeurs ultérieurement en utilisant la méthode Add:
extensions.Add("png", "paint")
Notez que la clé (le premier paramètre) doit être unique dans le dictionnaire, sinon une exception sera lancée.
Obtenir une valeur de dictionnaire
Vous pouvez obtenir la valeur d'une entrée dans le dictionnaire en utilisant la propriété 'Item':
Dim extensions As New Dictionary(Of String, String) From {
{ "txt", "notepad" },
{ "bmp", "paint" },
{ "doc", "winword" }
}
Dim program As String = extensions.Item("txt") 'will be "notepad"
' alternative syntax as Item is the default property (a.k.a. indexer)
Dim program As String = extensions("txt") 'will be "notepad"
' other alternative syntax using the (rare)
' dictionary member access operator (a.k.a. bang operator)
Dim program As String = extensions!txt 'will be "notepad"
Si la clé n'est pas présente dans le dictionnaire, une exception KeyNotFoundException sera lancée.
Vérification de la clé déjà dans le dictionnaire - réduction des données
La méthode ConstainsKey
est le moyen de savoir si une clé existe déjà dans le dictionnaire.
Cela est pratique pour la réduction des données. Dans l'exemple ci-dessous, chaque fois que nous rencontrons un nouveau mot, nous l'ajoutons en tant que clé dans le dictionnaire, sinon nous incrémentons le compteur pour ce mot spécifique.
Dim dic As IDictionary(Of String, Integer) = New Dictionary(Of String, Integer)
Dim words As String() = Split(<big text source>," ", -1, CompareMethod.Binary)
For Each str As String In words
If dic.ContainsKey(str) Then
dic(str) += 1
Else
dic.Add(str, 1)
End If
Next
Exemple de réduction XML: obtenir tous les noms de nœuds enfants et leur occurrence dans une branche d'un document XML
Dim nodes As IDictionary(Of String, Integer) = New Dictionary(Of String, Integer)
Dim xmlsrc = New XmlDocument()
xmlsrc.LoadXml(<any text stream source>)
For Each xn As XmlNode In xmlsrc.FirstChild.ChildNodes 'selects the proper parent
If nodes.ContainsKey(xn.Name) Then
nodes(xn.Name) += 1
Else
nodes.Add(xn.Name, 1)
End If
Next