MyTetra Share
Делитесь знаниями!
Словарь Dictionary(Of T, V)
24.03.2018
23:41
Текстовые метки: vb,Dictionary
Раздел: VB

Словарь 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 соответственно все значения в словаре.

Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования