Г. Шилдт - С#4.0 Полное руководство (1160795), страница 188
Текст из файла (страница 188)
(Иными словами, Метод Соырагето () сравнивает содержимое объектов, а не ссылки на них.) Ниже приведена форма объявления данного метода. гас Соврагето(оЬ)есс освег, 1соарагег сожрагег) Глава 25. Комекции, перечислители и итераторы 931 Ьоо1 ЕЧиа1я(оЬбесг оГЛег, твс(иа11гуеопрагег сотрагег) 1св СегяаяЬСоде(твсвта1ггусоврагег соярагем Метод Ес(са1я () должен возвращать логическое значение Сгце, если вызывающий объект и другой объект оСЛег равны.
А метод БегнаяЬСос(е () должен возвращать хеш-код для вызывающего объекта. Результаты, возвращаемые обоими методами, должны быть совместимы. Само сравнение обеспечивает объект, передаваемый через параметр сотврагег. Структура ту1с~1опаеуЕтт~еу В пространстве имен Буяс еж. со11ессйопя определена структура Рдс своп ах уепс ту. Необобщенные коллекции пар "ключ-значение" сохраняют эти пары в объекте типа РтсС1опагуЕпггу. В данной структуре определяются два следующих свойства.
рчЬ11с оЬ)ест Кеу ( Чем яеш ] ряы1с оь)ест ча1ие ( чеьч яес; Эти свойства служат для доступа к ключу или значению, связанному с элементом коллекции. Объект типа Р1ссдопагуЕпсгу может быть сконструирован с помощью конструктора: рчЫгс Ььсг1опагуЕпггу(оЬбесг Хеу, оЬ)ест ча1ие) где )геу обозначает ключ, а уа1ие — значение. Кдассы необобщенных комекций А теперь, когда представлены интерфейсы необобщенных коллекций, можно перейти к рассмотрению стандартных классов, в которых они реализуются. Ниже приведены классы необобщенных коллекций, за исключением коллекции типа Едсдг ха у, рассматриваемой далее в этой главе.
Класс Описание Дггаут Еяг Определяет динамический массив, т.е. такой массив, который может прн необходимости увеличивать свой размер Определяет хеш-таблицу для пар "ключ-значение" Определяет очередь, или список, действующий по принципу "первым при- шел — первым обслужен" Определяет отсортированный список пар "ключ-значение" Определяет стек, или список, действующий по принципу "первым пришел— последним обслужен" НаяпгаЬ1е Оиесе Боггес(11яг Бгасх Каждый из этих классов коллекций подробно рассматривается и демонстрируется далее на конкретных примерах.
Он должен возвращать -1, если вызываюи(ий объект предшествует другому объекту о слег; 1, если вызывающий объект следует после объекта о слег; и наконеть О, если значения обоих объектов одинаковы для целей сортировки. А само сравнение обеспечивает объект, передаваемый через параметр соирагег. Интерфейс 1БС гисгцга1Ес(пагаЬ1е служит для выяснения структурного равенства путем сравнения содержимого двух объектов. В этом интерфейсе определены следующие методы. 932 Часть В.
Библиотека О() Класс АггауТ.ха Ь В классе Аггау11яс поддерживаются динамические массивы, расширяющиеся и сокращающиеся по мере необходимости. В языке С(( стандартные массивы имеют фиксированную длину, которая не может изменяться во время выполнения программы. Это означает, что количество элементов в массиве нужно знать заранее. Но иногда требуемая конкретная длина массива остается неизвестной до самого момента выполнения программы. Именно для таких ситуаций и предназначен класс Аггаусляг.
В классе Агга у11 я С определяется массив переменной длины, который состоит из ссылок на объекты и может динамически увеличивать и уменьшать свой размер. Массив типа Аггауьсяс создается с первоначальным размером. Если этот размер превышается, то массив автоматически расширяется. А при удалении объектов из такого массива он автоматически сокращается. Коллекции класса Аггауьсяс широко применяются в практике программирования на С().
Именно поэтому они рассматриваются здесь подробно. Но многие способы применения коллекций класса Аггау11яс распространяются и на другие коллекции, в том числе и на обобщенные. В классе Аггауссяс реализуются интерфейсы 1со11есслоп, 1ъсяс, 1Впиглегаь1е и 1С1опеаЬ1е. Ниже приведены конструкторы класса Аггау11яг. рищго Аггаусгвг() риьзго Аггауслвг(1Со11еоггоп о) ригзгс Аггауъсяг(1пС сарасг Су) Таблица 25.4. Наиболее часто используемые методы, определенные в классе АггауВдяС Метод Описание риЬ11с ч1ггиа1 чосб Ас(бяапде(1со11есг1оп с) риЬ11с чдгсиа1 1пс В1пагуЯеагоЬ(оЬ)еог ча1не) Добавляет элементы из коллекции с в конец вызываю- щей коллекции типа Аггауьдяс Выполняет поиск в вызывающей коллекции значения ча1ие.
Возвращает индекс найденного элемента. Если искомое значение не найдено, возвращает отрицатель- ное значение. Вызывающий список должен быть отсо- ртирован Первый конструктор создает пустую коллекцию класса Аг хауб с яг с нулевой первоначальной емкостью. Второй конструктор создает коллекцию типа Аггаусдвг с количеством инициализируемых элементов, которое определяется параметром с и равно первоначальной емкости массива.
Третий конструктор создает коллекцию, имеющуго указанную первоначальную емкость, определяемую параметром сара су Су. В данном случае емкость обозначает размер базового массива, используемого для хранения элементов коллекции. Емкость коллекции типа Агга уцдя С может увеличиваться автоматически по мере добавления в нее элементов. В классе Аггауебяс определяется ряд собственных методов, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Некоторые из наиболее часто используемых методов класса Аггауцдяг перечислены в табл.
25.4. Коллекцию класса Аггау11яС можно отсортировать, вызвав метод Богг () . В этом случае поиск в отсортированной коллекции с помощью метода ВьпагуБеагсЬ () становится еще более эффективным. Содержимое коллекции типа Аггау11яг можно также обратить, вызвав метод Вечегяе () . Метод рпЫТс ч1ггпа1 1пг ВдпагуБеагсб(оЬбесг ча1ие, 1соврагег соврагег) рпЫ1с чфгспа1 1пс ВзпагуБеагсЬ(дпс Тпг(ех, Тпс соипг, оЬбесГ ча1пе, 1Соврагег соврагег) рпЬ11с чзгспа1 чоТс( СоруТо(Аггау яггау) рцЬ11с ч1ггпа1 чозс( СоруТо(Аггау аггау, Тпс яггау1пе(ях) рпЫТс ч1гсца1 чозс( СоруТо(1пс 1пбех, Аггау аггау, Тпс аггау1пе(ех, гпс соппг) рпЬ11с яГас1с Аггауъдяс ГзхеВБ1ге(Аггаувзяг 11яг) рпЫТс ч1гспа1 Аггауцвяг БеГЯапде(1пс 1пдех, Тпс ссипя) рпЫТс ч1гсца1 1п 1пг)ехОТ(оЬБесс ча1ие) рцЬ11с чзгспа1 чо1е( 1пяегГРапде(1пг Тпг)ех, 1Со11есГТоп с) рпЫТс ч1гяпа1 Тпс Ьаяс1пс(ехОЙ(оЬ1есГ ча1ие) Глава 25.
Комекции, перечислители и итераторы 933 Л одолжение табл. 25.4 Описание Выполняет поиск в вызывающей коллекции значения ча1пе, используя для сравнения способ, определяемый параметром соврягег. Возвращает индекс совпавшего элемента. Если искомое значение не найдено, возвращает отрицательное значение. Вызывающий список должен быть отсортирован Выполняет поиск в вызывающей комекции значения чя1 се, используя для сравнения способ, определяемый параметром соврагег. Поиск начинается с элемента, указываемого по индексу Тпс(ех, и включает количество элементов, определяемых пара метром со ип с. Метод возвращает индекс совпавшего элемента.
Если искомое значение не найдено, метод возвращает отрицательное значение. Вызывающий список должен быть стсортирован Копирует содержимое вызывающей коллекции в массив аггяу, который должен быть одномерным и совместимым по типу с элементами комекции Копирует содержимое вызывающей комекции в массив аггяу, начиная с элемента, указываемого по индексу аггаутпг)ех. Целевой массив должен быть одномерным и совместимым по типу с элементами комекции Копирует часть вызывающей комекции, начиная с элемента, указываемого по индексу Тпе(ех, и включая количество элементов, определяемых параметром со оп г, в массив яггяу, начиная с элемента, указываемого по индексу яггаутпе(ех.
ЦЕлЕВОй МаССив довкен быть одномерным и совместимым по типу с элементами комекции Заключает комекцию 11яс в оболочку типа Аггауъзяь с фиксированным размером и возвращает результат Возвращает часть вызывающей комекции типа Аггауьдяг. Часть возвращаемой комекции начинается с элемента, указываемого по индексу Тпыех, и включает количество элементов, определяемое параметром со оп ь Возвращаемый объект ссылается на те же элементы, что и вызывающий объект Возвращает индекс первого вхождения объекта ча1пе в вызывающей комекции. Если искомый объект не обнаружен, возвращает значение -1 Вставляет элементы коллекции с в вызывающую коллекцию, начиная с элемента, указываемого по индексу 1 по(ех Возвращает индекс последнего вхождения объекта ча1ие в вызывающей комекции. Если искомый объект не обнаружен, метод возвращает значение -1 934 Часть (1.
Библиотека С() Окончание табл. 25.4 Метод Описание роЬ11с ягаС1с Аггауъсяг Реас(оп1у(Аггауъсяг 11яг) Заключает коллекцию 11яС в оболочку типа Аггаусдяс, доступную только для чтения, и возвращает результат Удаляет часть вызывающей коллекции, начиная с элемента, указываемого по индексу Тпыех, и включая количество элементов, определяемое параметром соипг Располагает элементы вызывающей комекции в обратном порядке Располагает в обратном порядке часть вызывающей комекции, начиная с элемента, указываемого по индексу 1пе(ех, и включая количество элементов, определяемое параметром соипс Заменяет часть вызывающей комекции, начиная с элемента, указываемого по индексу 1пг(ех, элементами комекции с Сортирует вызывающую комекцию по нарастающей роЬ11с чсггпа1 чосс( Вевоченапде(гпг 1пе(ех, Тпг соопг) роЪ11с чсгСиа1 чо1с[ Речегяе() рцЫТс чсггиа1 чогц Речегяе(1пС 1пг(ех, гпС соипг) риЬ1гс чгггца1 чо1с( БеСРапсе(1пС 1пс(ех, 1Со11есгсоп с) рцЫТс чдггоа1 чо1с( Бог г () роЫ1с чсггца1 чозс( Яогг(1сотрагег сотрагег) Сортирует вызывающую комекцию, используя для сравнения способ, определяемый параметром сотрягег..