Г. Шилдт - С#4.0 Полное руководство (1160795), страница 195
Текст из файла (страница 195)
В этой структуре определяются два следующих свойства. риЬ11с ТКеу Кеу ( Чет; )у риытс ТНа1ие Ча1ие ( рет; ); В этих свойствах хранятся ключ и значение соответствующего элемента коллекции. Для построения объекта типа КеуЧа1иера1т<ТКеу, ТЧа1ие> служит конструктор: ряЫтс Кеуча1яера1т (ТКеу Хеу, ТЧа1се иа1ие) где )геу обозначает ключ, а ча1не — значение. Классы обобщенных коллекций Таблица 25.14. Основные классы обобщенных коллекций Описание 01ст1опату<тхеу, ТЧа1це> Сохраняет пары "ключ-значение". Обеспечивает такие же функциональные возможности, как и необобщенный класс наянтаЫе Сохраняет ряд уникальных значений, используя хеш- таблицу Сохраняет элементы в двунаправленном списке Создает динамический массив.
Обеспечивает такие же функциональные возможности, как и необобщенный класс дттаущят Создает очередь. Обеспечивает такие же функциональ- ные возможности, как и необобщенный класс Спеце Создает отсортированный список из пар "ключ- значение" Создает отсортированный список из пар "ключ- значение". Обеспечивает такие же функциональные воз- можности, как и необобщенный класс Боттес(н1ят Создает отсортированное множество Создает стек. Обеспечивает такие же функциональные возможности, как и необобщенный класс Бтас)с ная)тнет<т> 11пкеб).1ят<т> Б1ят<т> Оцеие<т> Боттес(Истгопату<ТКеу, ТЧа1се> Боттес((,1ят<ткеу, тча1це> Боттес(нет<т> Бтаск<т> Как упоминалось ранее, классы обобщенных коллекций по большей части соответствуют своим необобщенным аналогам, хотя в некоторых случаях они носят другие имена.
Отличаются они также своей организацией и функциональными возможностями. Классы обобщенных коллекций определяются в пространстве имен Буятеж. Со11ес стоп я . Сепет1с. В табл. 25.14 приведены классы, рассматриваемые в этой главе. Эти классы составляют основу обобщенных коллекций. Глава 25. Комекции, перечислители и итераторы 961 ПРИМЕЧАНИЕ В пространстве имен Буясев.со11ессдопя.бепегьс находятся также следующие классы: класс Бупс)тгоп1зес(Со11есс1оп<т> синхронизированной коллекции на основе класса 111яс<т>; класс Бупс)тгоп1зес)квас)оп1усо11есс1оп<т>, доступной только для чтения синхронизированной коллекции на основе класса 111яс<т>; абстрактный класс Бупс)тгоп1хес)кеусо11есс1оп<к, т>, служащий в качестве базового для класса комекции Буясев.
Бегч1сенос(е1.()г1Бспевекеуес)со11есс1оп; а также класс Кеуег)Вутуресо11есегоп<т> комекции, в которой в качестве ключей используются отдельные типы данных. Класс Т,йвб<т> В классе 11яс<т> реализуется обобщенный динамический массив. Он ничем принципиально не отличается от класса необобщенной коллекции Аггау11яг. В этом классе реализуются интерфейсы Тсо11ессдоп, тсо11ессьоп<т>, 111яс, 111яг<Т>, 15ппвегаЬ1е и 1ЕппвегаЫе<Т>. У класса 11яг<Т> имеются следующие конструкторы. рчыгс тдяс() рчыгс Ьхяс (тапчвегаЫе<т> со11есг1ощ рчыьс гьяс(хпг сарастгу) Таблица 25.15.
Наиболее часто используемые методы, определенные в классе 1.1вб<т> Метод Описание риЫТс чьггпа1 чо1г) Ас)с(Капуе(1со11есе1оп со11есяуоп) роЫТсчьггоа1 1пе БйпагуБеагси (Т 1 Сев) Добавляет элементы из коллекции со11ессуоп в конец вызывающей комекции типа Аггау11яс Выполняет поиск в вызывающей коллекции значеНня, ЗадаеаЕМОГО ПараМЕтрОМ ТСев. ВОЗВращаЕт индекс совпавшего элемента. Если искомое значение не найдено, возвращается отрицательное значение. Вызывающий список должен быть отсо- ртирован Первый конструктор создает пустую коллекцию класса 11яс с выбираемой по умолчанию первоначальной емкостью. Второй конструктор создает коллекцию типа 11я С с количеством инициализируемых элементов, которое определяется параметром со11есС1оп и равно первоначальной емкости массива. Третий конструктор создает коллекцию типа 11яс, имеющую первоначальную емкость, задаваемую параметром сара с1 су. В данном случае емкость обозначает размер базового массива, используемого для хранения элементов коллекции.
Емкость коллекции, создаваемой в виде динамического массива, может увеличиваться автоматически по мере добавления в нее элементов. В классе 11яс<Т> определяется ряд собственных методов, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Некоторые из наиболее часто используемых методов этого класса перечислены в табл. 25.15. Л одолжение табл. 25.15 Метод Описание риЬ11с чо1б Вогс() 962 Часть И.
Библиотека С(т риЫТс Тпс ВгпагуЯеагсЬ(Т Тгет, 1Соврагег<Т> сотрагег) риЫТс 1пг ВбпагуэеагсЛ(1пс Тпбех, Тпг соипг, Т Тгет, 1Ссврагег<Т> сотрагег) риЬ11с Ьвзг<Т> Оегяапие(1пс 1пбех, Тпг соипс) риЫ1с 1пс 1пбехОг(Т бсет) риЬ11с чодб 1пзеггяапие(1пг бпбех, 1ЕпивегаЬ1е<Т> со11есс1оп) риЫТс Тпт Ваз<1пбехОТ (Т л гет) риЫТс чо1б Вевочеяапде (Тпс 1пбех, 1пс сисис) риЫТс чо1б Вечегзе () ри611с чодб Вечегзе(1пг бпбех, Тпс соиле) Выполняет поиск в вызывающей коллекции значения, задаваемого параметром 1 сет, используя для сравнения указанный способ, определяемый параметром сотрагег.
Возвращает индекс совпавшего элемента. Если искомое значение не найдено, возвращается отрицательное значение. Вызывающий список должен быть отсортирован Выполняет поиск в вызывающей коллекции значения, задаваемого параметром Тгет, используя для сравнения указанный способ, определяемый параметром сотрагег.
Поиск начинается с элемента, указываемого по индексу бпбех, и включает количество элементов, определяемых параметром соиле. Метод возвращает индекс совпавшего элемента. Если искомое значение не найдено, возвращается отрицательное значение. Вызывающий список должен быть отсортирован Возвращает часть вызывающей коллекции. Часть возвращаемой коллекции начинается с элемента, указываемого по индексу Тпбех, и включает количество элементов, задаваемое параметром соипв Возвращаемый объект ссьвается на те же элементы, что и вызывающий объект Возвращает индекс первого вхождения элемента 1 сот в вызывающей коллекции.
Если искомый элемент не обнаружен, возвращается значение -1 ВСтаВЛяЕт ЭЛЕМЕНТЫ КОЛЛЕКцнн си11ессбип В ВЫ- зывающую коллекцию, начиная с элемента, указываемого по индексу Тпбех Возвращает индекс последнего вхождения элемента Тсет в вызывающей коллекции. Если искомый элемент не обнаружен, возвращается значение -1 Удаляет часть вызывающей коллекции, начиная с элемента, указываемого по индексу бпбех, и включая количество элементов, определяемое параметром соипг Располагает элементы вызывающей коллекции в обратном порядке Располагает в обратном порядке часть вызывающей коллекции, начиная с элемента, указываемого по индексу Тпбех, и включая количество элементов, определяемое параметром соиле Сортирует вызывающую коллекцию по нарас- тающей Глава 25.
Коллекции, перечислители и итераторы 963 Окончание табл. 25.15 Описание Метод риб11с чо1с( Яогс (1сотрасег<т> сотраеее) Сортирует вызывающую коллекцию, используя для сравнения способ, задаваемый параметром сотрахет Если параметр сотрагег имеет пустое значение, то для сравнения используется способ, выбираемый по умолчанию Сортирует вызывающую коллекцию, используя для сравнения указанный делегат риЬ11с чо1г( яогг(Сотрагдяоп<Т> сотраеуяоп) риЬ11с чо1с) Еогс(1пя 1пг(ех, 1пг соипг, 1Сотрагег<Т> сотрапех) Сортирует вызывающую комекцию, используя для сравнения способ, задаваемый параметром потрясет Сортировка начинается с элемента, указываемого по индексу 1пг(ех, и включает количество элементов, определяемых параметром соил с.
Если параметр потрясет имеет пустое значение, го для сравнения используется способ, выбираемый по умолчанию Возвращает массив, содержащий копии элементов вызывающего объекта Сокращает емкость вызывающей комекции таким образом, чтобы она не превышала 105ь от количества элементов, хранящихся а ней на данный момент риЬ11с Т(] Тодггау() риЬ11с чо1с( Тг1тЕхсеяя() В классе ЬТ я я <Т> определяется также собственное свойство Сара с 1 С у, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются.
Это свойство объявляется следующим образом. риЬ11с Тпг Сарасъсу ( Чем яеш ) Свойство Сарасдсу позволяет установить и получить емкость вызывающей коллекции в качестве динамического массива. Эта емкость равна количеству элементов, которые может содержать коллекция до ее вынужденного расширения. Такая коллекция расширяется автоматически, и поэтому задавать ее емкость вручную необязательно.
Но из соображений эффективности это иногда можно сделать, если заранее известно количество элементов коллекции. Благодаря этому исключаются издержки на выделение дополнительной памяти. В классе Ьу я Ь<Т> реализуется также приведенный ниже индексатор, определенный в интерфейсе 1ЕТя С<Т>.