Читаем C# 4.0: полное руководство полностью

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


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


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

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


public TKey Key; public TValue Value;


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

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

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


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

// коллекции SortedDictionary

using System;

using System.Collections.Generic;


class GenSortedDictionaryDemo {

  static void Main() {

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

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

    SortedDictionary diet =

          new SortedDictionary();


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

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

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

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

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


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

    ICollection с = diet.Keys;


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

    foreach(string str in с)

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

  }

}


Эта программа дает следующий результат.


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

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

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

Шварц, Сара, зарплата: $59,000.00


Как видите, список работников и их зарплаты отсортированы по ключу, в качестве которого в данном случае служит фамилия и имя работника.


Класс SortedList

В коллекции класса SortedList хранится отсортированный список пар "ключ-значение". Это обобщенный эквивалент класса необобщенной коллекции SortedList. В классе SortedList реализуются интерфейсы IDictionary, IDictionary, ICollection, ICollection>, IEnumerable и IEnumerable>. Размер коллекции типа SortedList изменяется динамически, автоматически увеличиваясь по мере необходимости. Класс SortedList подобен классу SortedDictionary, но у него другие рабочие характеристики. В частности, класс SortedList использует меньше памяти, тогда как класс SortedDictionary позволяет быстрее вставлять неупорядоченные элементы в коллекцию.

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


public SortedList()

public SortedList(IDictionaryCTKey, TValue> dictionary)

public SortedList(int capacity)

public SortedList(IComparer comparer)


Перейти на страницу:

Похожие книги

1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
Разработка приложений в среде Linux. Второе издание
Разработка приложений в среде Linux. Второе издание

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет СЃРѕР±РѕР№ отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из РґСЂСѓРіРёС… операционных систем. РџРѕРґСЂРѕР±но рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование СЃРІРѕР±одно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Р

Майкл К. Джонсон , Эрик В. Троан

Программирование, программы, базы данных