Visual Basic .NET Language
Woordenboeken
Zoeken…
Invoering
Een woordenboek vertegenwoordigt een verzameling sleutels en waarden. Zie MSDN Dictionary (Tkey, TValue) Klasse .
Loop door een woordenboek en druk alle vermeldingen af
Elk paar in het woordenboek is een instantie van KeyValuePair
met dezelfde typeparameters als het woordenboek. Wanneer u het woordenboek doorloopt met For Each
, krijgt elke iteratie een van de Key-Value-paren die in het woordenboek zijn opgeslagen.
For Each kvp As KeyValuePair(Of String, String) In currentDictionary
Console.WriteLine("{0}: {1}", kvp.Key, kvp.Value)
Next
Maak een woordenboek vol met waarden
Dim extensions As New Dictionary(Of String, String) _
from { { "txt", "notepad" },
{ "bmp", "paint" },
{ "doc", "winword" } }
Dit maakt een woordenboek en vult dit onmiddellijk met drie KeyValuePairs.
U kunt later ook nieuwe waarden toevoegen met behulp van de methode Toevoegen:
extensions.Add("png", "paint")
Merk op dat de sleutel (de eerste parameter) uniek moet zijn in het woordenboek, anders wordt een uitzondering gegenereerd.
Een woordenboekwaarde krijgen
U kunt de waarde van een vermelding in het woordenboek ophalen met de eigenschap '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"
Als de sleutel niet aanwezig is in het woordenboek, wordt een KeyNotFoundException gegenereerd.
Bezig met controleren op sleutel die al in woordenboek staat - gegevensreductie
De ConstainsKey
methode is de manier om te weten of er al een sleutel bestaat in het woordenboek.
Dit is handig voor gegevensreductie. In het onderstaande voorbeeld voegen we elke keer dat we een nieuw woord tegenkomen het toe als een sleutel in het woordenboek, anders verhogen we de teller voor dit specifieke woord.
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
Voorbeeld van XML-reductie: alle namen en voorvallen van onderliggende knooppunten ophalen in een tak van een XML-document
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