Visual Basic .NET Language
Słowniki
Szukaj…
Wprowadzenie
Słownik reprezentuje kolekcję kluczy i wartości. Zobacz MSDN Dictionary (Tkey, TValue) Class .
Pętlę przez słownik i wydrukuj wszystkie wpisy
Każda para w słowniku jest instancją KeyValuePair
o takich samych parametrach typu jak Słownik. Po przejściu przez słownik za pomocą For Each
, każda iteracja da ci jedną z par klucz-wartość przechowywanych w słowniku.
For Each kvp As KeyValuePair(Of String, String) In currentDictionary
Console.WriteLine("{0}: {1}", kvp.Key, kvp.Value)
Next
Utwórz słownik wypełniony wartościami
Dim extensions As New Dictionary(Of String, String) _
from { { "txt", "notepad" },
{ "bmp", "paint" },
{ "doc", "winword" } }
To tworzy słownik i natychmiast wypełnia go trzema KeyValuePairs.
Możesz także dodać nowe wartości później, używając metody Add:
extensions.Add("png", "paint")
Pamiętaj, że klucz (pierwszy parametr) musi być unikalny w słowniku, w przeciwnym razie zostanie zgłoszony wyjątek.
Uzyskiwanie wartości słownika
Wartość wpisu w słowniku można uzyskać za pomocą właściwości „Element”:
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"
Jeśli klucz nie jest obecny w słowniku, zostanie wygenerowany wyjątek KeyNotFoundException.
Sprawdzanie klucza już w słowniku - redukcja danych
Metoda ConstainsKey
jest sposobem na ConstainsKey
, czy klucz istnieje już w Słowniku.
Przydaje się to do redukcji danych. W poniższym przykładzie za każdym razem, gdy napotykamy nowe słowo, dodajemy je jako klucz w słowniku, w przeciwnym razie zwiększamy licznik tego konkretnego słowa.
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
Przykład redukcji XML: uzyskanie wszystkich nazw i wystąpień węzłów podrzędnych w gałęzi dokumentu 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