Visual Basic .NET Language
ordböcker
Sök…
Introduktion
En ordbok representerar en samling nycklar och värden. Se MSDN Dictionary (Tkey, TValue) Class .
Gå igenom en ordlista och skriv ut alla poster
Varje par i ordboken är en instans av KeyValuePair
med samma typparametrar som ordboken. När du går igenom ordboken med For Each
, kommer varje iteration att ge dig en av de nyckelvärdespar som finns lagrade i ordboken.
For Each kvp As KeyValuePair(Of String, String) In currentDictionary
Console.WriteLine("{0}: {1}", kvp.Key, kvp.Value)
Next
Skapa en ordbok fylld med värden
Dim extensions As New Dictionary(Of String, String) _
from { { "txt", "notepad" },
{ "bmp", "paint" },
{ "doc", "winword" } }
Detta skapar en ordbok och fyller genast med tre KeyValuePairs.
Du kan också lägga till nya värden senare genom att använda metoden Lägg till:
extensions.Add("png", "paint")
Observera att nyckeln (den första parametern) måste vara unik i ordboken, annars kastas ett undantag.
Få ett ordboksvärde
Du kan få värdet på en post i ordboken med hjälp av egenskapen 'Objekt':
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"
Om nyckeln inte finns i ordboken kastas en KeyNotFoundException.
Letar du efter nyckel som redan finns i ordlistan - datareduktion
Metoden ConstainsKey
är sättet att veta om en nyckel redan finns i ordboken.
Detta är praktiskt för datareduktion. I exemplet nedan lägger vi till det som en nyckel i ordboken varje gång vi möter ett nytt ord, annars ökar vi räknaren för detta specifika ord.
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
Exempel på XML-reduktion: få alla namn på barnnoder och förekomst i en gren av ett XML-dokument
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