Работа со словарями Dictionary

Добрый день! Сегодня я решил помочь разобраться с классом Dictionary словарями. Научиться ими пользоваться и применять в своих приложениях. По сути словари это обычные коллекция, практически ничем не отличается от List, однако это не  совсем так. Разница у них все же есть, к примеру при добавлении в List данных смещаются, получая свой индекс. Со словарями тут иначе, у них нет индекса так токового, у них есть ключи Key и значение эти ключей. Ключем может быть как текст, так и символ и цифры.  Создание и использование словарей может имеет несколько вариаций, рассмотрим их.

Создаем ключи в словаре и вносим в них значения:

На этом все, мы создали словарь с ключами и поместили в них значения, теперь их можно вывести с помощью foreach:

Еще один вариант инициализации:

Еще один вариант инициализации путем создания динамически анонимного типа данных:

 

Одной из основных ошибок которые встречаются у тех кто использует словари, при попытке создать ключ, которые уже имеется в словаря вызывает ошибку так называемые коллизии, для этого нужно использовать способы их отловить с помощью метода ContainsKey(), рассмотрим их:

Мы сделали проверку на существование в словаре такого ключа, и просто изменили в нем  значение на новое.

Удаление одного из значений в месте с ключем происходит с помощью метода Remove(); Для этого в методе необходимо указать название ключа, после чего произойдет удаление..

Часто применяют словари в следующих типах задач. Когда у нас есть массив строк, нам надо найти дубликаты заданной строки и вывести результат, этого не сделать к примеру с помощью массива, но легко сделать можно с помощью Dictionary. Еще одним классическим вариантом является такая вариация. Когда надо произвести соответствие к примеру по id или названию.

Рассмотрим пример дан массив строк, посчитать количество одинаковых строк в массиве.

 

 

Нередко встречается необходимость, сгруппировав элементы, преобразовать их в структуру данных для поиска группы по ключу группировки. Для этого воспользуемся самым оптимальным решением с помощью LINQ

Вывод:

 

 

Обновлено: 22.05.2018 — 13:28

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.