Visual Basic .NET Language
dizionari
Ricerca…
introduzione
Un dizionario rappresenta una raccolta di chiavi e valori. Vedi la classe MSDN Dictionary (Tkey, TValue) .
Passa attraverso un dizionario e stampa tutte le voci
Ogni coppia nel dizionario è un'istanza di KeyValuePair
con gli stessi parametri del dizionario. Quando esegui il looping del dizionario con For Each
, ogni iterazione ti assegnerà una delle coppie di valori-chiave memorizzate nel dizionario.
For Each kvp As KeyValuePair(Of String, String) In currentDictionary
Console.WriteLine("{0}: {1}", kvp.Key, kvp.Value)
Next
Crea un dizionario pieno di valori
Dim extensions As New Dictionary(Of String, String) _
from { { "txt", "notepad" },
{ "bmp", "paint" },
{ "doc", "winword" } }
Questo crea un dizionario e lo riempie immediatamente con tre KeyValuePairs.
Puoi anche aggiungere nuovi valori in seguito utilizzando il metodo Aggiungi:
extensions.Add("png", "paint")
Si noti che la chiave (il primo parametro) deve essere univoca nel dizionario, altrimenti verrà generata un'eccezione.
Ottenere un valore di dizionario
Puoi ottenere il valore di una voce nel dizionario usando la proprietà 'Articolo':
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"
Se la chiave non è presente nel dizionario, verrà lanciata una KeyNotFoundException.
Verifica della chiave già presente nel dizionario - riduzione dei dati
Il metodo ConstainsKey
è il modo per sapere se una chiave esiste già nel Dizionario.
Questo è utile per la riduzione dei dati. Nell'esempio seguente, ogni volta che incontriamo una nuova parola, la aggiungiamo come chiave nel dizionario, altrimenti incrementiamo il contatore per questa parola specifica.
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
Esempio di riduzione XML: acquisizione di tutti i nomi e l'occorrenza dei nodi figlio in un ramo di un documento 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