Словарь Dictionary(Of T, V)

Последнее обновление: 30.10.2015

Обобщенная коллекция Dictionary(Of T, V) является еще одним из наиболее используемых классов коллекций. Класс Dictionary(Of T, V) представляет словарь, который хранит объекты в виде пары ключ-значение. Каждый такой объект является объектом класса KeyValuePair(Of TKey, TValue). С помощью свойств Key и Value, которые есть у данного класса, мы можем получить ключ и значение элемента в словаре.

Рассмотрим на примере использование словарей:

Dim states As New Dictionary(Of Integer, String)(5)
states.Add(1, "Россия")
states.Add(3, "Великобритания")
states.Add(2, "США")
states.Add(4, "Франция")
states.Add(5, "Китай")

For Each item As KeyValuePair(Of Integer, String) In states
    Console.WriteLine(item.Key.ToString() & " - " & item.Value)
Next

'получение элемента по ключу
Dim state As String = states(4)

'удаление по ключу
states.Remove(2)

Класс словарей также, как и другие коллекции, предоставляет методы Add и Remove для добавления и удаления элементов. Только в случае словарей в метод Add передаются два параметра: ключ и значение. А метод Remove удаляет не по индексу, а по ключу.

Поскольку в примере выше ключами является объекты типа Integer, а значениями - объекты типа String, то словарь в нашем случае будет хранить объекты KeyValuePair(Of Integer, String). В цикле For Each также, как и у других коллекций, можно перебрать все элементы и извлечь их них ключ и значение.

Кроме того, мы можем получить отдельно коллекции ключей и значений словаря:

Module Module1

    Sub Main()

        Dim people As New Dictionary(Of Char, Person)()
        people.Add("b"c, New Person() With {.Name = "Bill"})
        people.Add("t"c, New Person() With {.Name = "Tom"})
        people.Add("j"c, New Person() With {.Name = "John"})

        For Each item As KeyValuePair(Of Char, Person) In people
            'item.Value представляет класс Person
            Console.WriteLine(item.Key.ToString() & " - " & item.Value.Name)
        Next

        'перебор ключей
        For Each c As Char In people.Keys
            Console.WriteLine(c)
        Next

        'перебор по значениям
        For Each p As Person In people.Values
            Console.WriteLine(p.Name)
        Next

        Console.ReadLine()
    End Sub

    Class Person
        Public Property Name() As String
    End Class

End Module

В данном случае в качестве ключей выступают объекты типа Char, а значениями - объекты Person. С помощью свойства Keys мы можем получить ключи словаря, а с помощью свойства Values соответственно все значения в словаре.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850