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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow