Создать словарь для хранения имен и фамилий



// работников и их зарплаты.  

Dictionary<string, double> diet =  

new Dictionary<string, double>();  

 

Добавить элементы в коллекцию,

diet.Add("Батлер, Джон", 73000);

diet.Add("Шварц, Capa", 59000);

diet.Add("Пайк, Томас", 45000);

diet.Add("Фрэнк, Эд", 99000);  

 

// Получить коллекцию ключей, т.е. фамилий и имен.  

ICollection<string> с = diet.Keys;  

 

Использовать ключи для получения значений, т.е. зарплаты,

foreach(string str in с)  

Console.WriteLine ("{0}, зарплата: {1:C}", str, diet[str]);  

}

}

 

Ниже приведен результат выполнения этой программы.

 

Батлер, Джон, зарплата: $73 000,00

Шварц, Capa, зарплата: $59 000,00

Пайк, Томас, зарплата: $45 000,00

Фрэнк, Эд, зарплата: $99 000,00

 

 

Класс SortedDictionary<TKey, TValue>

 

В коллекции класса SortedDictionary<TKey, TValue> пары "ключ-значение" хранятся таким же образом, как и в коллекции класса Dictionary<TKey, TValue>, за исключением того, что они отсортированы по соответствующему ключу. В классе SortedDictionary<TKey, TValue> реализуются интерфейсы IDictionary, IDictionary<TKey, TValue>, ICollection, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable и IEnumerable<KeyValuePair<TKey, TValue>>. В классе SortedDictionary<TKey, TValue> предоставляются также следующие конструкторы.

 

Public SortedDictionary()

public SortedDictionary(IDictionary<TKey, TValue> dictionary)

public SortedDictionary(IComparer<TKey> comparer)

public SortedDictionary(IDictionaryCTKey, TValue> dictionary,

IComparer<TKey> comparer)

 

В первом конструкторе создается пустой словарь, во втором конструкторе — словарь с указанным количеством элементов dictionary. В третьем конструкторе допускается указывать с помощью параметра comparer типа IComparer способ сравнения, используемый для сортировки, а в четвертом конструкторе — инициализировать словарь, помимо указания способа сравнения.

В классе SortedDictionary<TKey, TValue> определен ряд методов. Некоторые наиболее часто используемые методы этого класса сведены в табл. 25.18.

 

Таблица 25.18. Наиболее часто используемые методы, определенные в классе SortedDictionaryCTKey, TValue>

Метод - Описание

 

public void Add (TKey key, TValue value) -  

Добавляет в словарь пару “ключ-значение", определяемую параметрами key и value. Если ключ key уже находится в словаре, то его значение не изменяется, и генерируется исключение ArgumentException

public bool ContainsKey (TKey кеу) -  Возвращает логическое значение true, если вызывающий словарь содержит объект key в качестве ключа; в противном случае — логическое значение false

public bool ContainsValue(TValue value) public bool Remove(TKey key) - Возвращает логическое значение true, если вызывающий словарь содержит значение value; в противном случае — логическое значение false Удаляет ключ key из словаря. При удачном исходе операции возвращается логическое значение true, а если ключ key отсутствует в словаре — логическое значение false

 

Кроме того, в классе SortedDictionary<TKey, TValue> определяются собственные свойства, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Эти свойства приведены ниже.

 

Свойство - Описание

 

public Icomparer<TKey> Comparer { get; } -  Получает метод сравнения для вызывающего словаря

public SortedDictionary<TKey, TValue>.KeyCollection Keys { get; } -  Получает коллекцию ключей

public SortedDictionary<TKey, TValue>.ValueCollection Values { get; } - Получает коллекцию значений

 

Следует иметь в виду, что ключи и значения, содержащиеся в коллекции, доступны отдельными списками с помощью свойств Keys и Values. В коллекциях типа SortedDictionary<TKey, TValue>.KeyCollection и SortedDictionary<TKey, TValu*e>.ValueCollection реализуются как обобщенные, так и необобщенные формы интерфейсов ICollection и IEnumerable.

И наконец, в классе SortedDictionary<TKey, TValue> реализуется приведенный ниже индексатор, определенный в интерфейсе IDictionary<TKey, TValue>

 

public TValue this[TKey key] { get; set; }

 

Этот индексатор служит для получения и установки значения элемента коллекции, а также для добавления в коллекцию нового элемента. Но в данном случае в качестве индекса служит ключ элемента, а не сам индекс.

При перечислении коллекции типа SortedDictionary<TKey, TValue> из нее возвращаются пары "ключ-значение" в форме структуры KeyValuePair<TKey, TValue> Напомним, что в этой структуре определяются два следующих поля.

 

public TKey Key; public TValue Value;

 

В этих полях содержится ключ или значение соответствующего элемента коллекции. Как правило, структура KeyValuePair<TKey, TValue> не используется непосредственно, поскольку средства класса SortedDictionary<TKey, TValue> позволяют работать с ключами и значениями по отдельности. Но при перечислении коллекции типа SortedDictionary<TKey, TValue>, например в цикле foreach, перечисляемыми объектами являются пары типа KeyValuePair.

Все ключи в коллекции типа SortedDictionary<TKey, TValue> должны быть уникальными, причем ключ не должен изменяться до тех пор, пока он служит в качестве ключа. В то же время значения не обязательно должны быть уникальными.

В приведенном ниже примере демонстрируется применение класса SortedDictionary<TKey, TValue> Это измененный вариант предыдущего примера, демонстрировавшего применение класса Dictionary<TKey, TValue> В данном варианте база данных работников отсортирована по фамилии и имени работника, которые служат в качестве ключа.

 

// Продемонстрировать применение класса обобщенной

// коллекции SortedDictionary<TKey, TValue>

using System;

using System.Collections.Generic;

 

class GenSortedDictionaryDemo {

static void Main() {


Дата добавления: 2019-02-12; просмотров: 303; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!