Главная » Просмотр файлов » Г. Шилдт - С# 3.0 Полное руководство. 2010

Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 177

Файл №1160798 Г. Шилдт - С# 3.0 Полное руководство. 2010 (Г. Шилдт - С# 3.0 Полное руководство. 2010) 177 страницаГ. Шилдт - С# 3.0 Полное руководство. 2010 (1160798) страница 1772019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 177)

// Продемонстрировать применение класса обобщенной // коллекции 01сстопагу<ТК, ТН>. пятна Яуясею; цагин Яуясею.со11есг1опя.оепег1с; с1аяя Сеп01ссгопагуоеюо ( ягасгс чо1п махп() ( // Создать словарь лля хранения имен и фамилий // работников и их зарплаты, цасс1опагу<ясг1пд, боцЫе> бгсс = пен 01сг1опагу<ясг1пд, боцЫе>() // Добавить элементы в коллекцию. б1сг.асЫ("Батлер, Джон", 79000); бгсг.лоб("Шварц, Сара", 59000); 61сс.лоб("Пайк, Томас", 45000)к 01сг.лбе("Фрэнк, Зд", 99000)к // Получить коллекцию ключей, т.е. фамилий и имен. гсо11есс1оп<ясг1пч> с = б1сс.хеуя) // Использовать ключи для получения значений, т.е. зарплаты.

Гогеась(ясг1пч ясг 1п с) Сопао1е.нгггевгпе("(0), зарплата: (1:С)", ясг, 01сс(ясг))к Глава 24. Коллекции, перечнслнтелн н итераторы 881 Ниже приведен результат выполнения этой программы. Батлер, Джон, зарплата: 573,000.00 Шварц, Сара, зарплата: $59,000.00 Пайк, Томас, зарплата: 345,000.00 Фрэнк, Эл, зарплата: 599,000.00 риЫ1с Яоггецвлсгсопагу() Рпысс яогсет)01сссопагу(101сссопагу<тк, тч> сцсс) Рчь11с зогсеп01ссзопагу(1соврагег<тк> совр) риЫ1< Яоггейогсгзопагу(101сгсопагу<ТК, ТЧ> с(зсг, 1Соврагег<ТК> совр) В первом конструкторе создается пустой словарь, во втором конструкторе — словарь с указанным количеством элементов г(Тес. В третьем конструкторе допускается указывать метод сравнения типа 1Соврагег, используемый для сортировки, а в четвертом конструкторе — инициализировать словарь, помимо указания метода сравнения типа 1Соврагег.

В классе Боксе()Р1сс1опагу<тк, тч> определен ряд методов. Некоторые наиболее употребительные методы этого класса сведены в табл. 24.17. Таблица 24.17. Наиболее употребительныеметоды, определениыеа классе Зогсесц)1смопагу<тк, тч> Описание РоЫЕс чогл Ас(г) (ТК )г, ТЧ ч) Добавляет а словарь пару "ключ-значение", определяе- мую параметрами К и в Если ключ к уже находится в словаре, то его значение не изменяется и генерируется ИСКПЮЧЕНИЕ АГЯОВЕПСЕХСЕРС1ОП роЫТс Ьоо1 Сопга1пзКеу(ТК )г) Возвращает логическое значение сгве, если вызываю- щий словарь содержит объект )г в качестве ключа; в про- тивном случае — логическое значение Га1зе риЫТс Ьоо1 Сопгазпзча1че (ТЧ ч) Возвращает логическое значение сгче, если вызываю- щий словарь содержит значение и в противном случае— логическое значение га1зе рвЫ1с Яогге001сгсопагу.

Епшвегагог<ТК, тч> БеСЕпввегагог() Возвращает перечиспитепь для вызывающего словаря риЫ1с Ьоо1 Бевоче(ТК )г) Удапяет ключ )г иэ словаря. При удачном исходе опе- рации возвращается логическое значение с г не, а если ключ )г отсутствует в словаре — логическое значение га1зе Кроме того, в классе Яогге((010СТопагу<ТК, ТЧ> определяются собственные свойства, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются.

Эти свойства приведены ниже. Класс'Бок сесШлсслопату<т(у, ТК> В коллекции класса ЯоггеПР1сгуопагу<ТЧ, ТК> пары "ключ — значение" хранятся таким же образом, как и в коллекции класса Р1сс1опагу<тк, тч>, за исключением того, что они отсортированы по соответствующему ключу. В классе яогсес(Р1011опагу<тч, тк> реализуются интерфейсы 1Р1ссьопагу,101сс1опагу<тк, ТЧ>, 1С011есС1оп, 1С011есг1оп<КеуЧа1пеРалг<ТК, ТЧ», 1ЕпцвегаЬ1е и ХЕпцвегаЫе<КеуЧа1цеРа1г<ТК, ТЧ». В классе яогСе((Р1001опагу<ТЧ, ТК> предоставляются также следующие конструкторы: 882 Часть П. Библиотека С№ Свойство Описание рцЫ1с аг<ТК> Соврагег ( чег; ) рцы1с Боггебргсг1опагу<тк, тч>. КеуСо11есггоп Кеуя ( четы ) Получает метод сравнения дпя вызывающего словаря Получает коллекцию ключей рцЫ1с Боггебр1сстопагу<ТК, ТЧ>. Ча1цеСо11есс1оп Ча1цея ( дес; ) Получает коллекцию значений Следует иметь в виду, что ключи и значения, содержащиеся в коллекции, доступны отдельными списками с помощью свойств Кеуя и Ча1цея.

В коллекциях типа БоггебРТссйопагу<ТК, ТЧ>.кеуСо11есс1оп и БогсебР1сгй-пагу<ТК, ТЧ>. Ча1цеСо11ессйоп реализуются как обобщенные, так и необобщенные формы интерфейсов 1Со11есс№оп и 1ЕпцвегаЫе. И наконец, в классе БогсебР1ссйопагу<тк, тч> реализуется приведенный ниже индексатор, определенный в интерфейсе 1Р1ссйопагу<ТК, ТЧ>. рцьзгс тч сыз(тк кеу) ( Бось вес; ) рцЫ1с тК Кеу) рцЬ11с ТЧ Ча1цеп В этих полях содержится ключ или значение соответствующего элемента коллекции. Как правило, структура кеуча1церайг<ТК, ТЧ> не используется непосредственно, поскольку средства класса БогсебР1сг№опагу<тк, тч> позволяют работать с ключами и значениями по отдельности. Но при перечислении коллекции типа БогсебР№сс№опагу<тк, тч>, например в цикле Тогеас)т, перечисляемыми объектами являются пары типа КеуЧа1цеРа1г.

Все ключи в коллекции типа БогсебР1сс№опагу<тк, тч> должны быть уникальными, причем ключ не должен изменяться до тех пор, пока он служит в качестве ключа. В то же время значения не обязательно должны быть уникальными. В приведенном ниже примере демонстрируется применение класса БоггебР№сс1опагу<ТК, ТЧ>. Это переделанный вариант предыдущего примера, демонстрировавшего применение класса Р1сс1опагу<тк, Тч>. В данном варианте база данных работников отсортирована по фамилии и имени работника, которые служат в качестве ключа. // Продемонстрировать применение класса обобщенной // коллекции Богсебввсс1опагу<тк, тч>. цв1пд Буягевп ця1пе Буягев.со11есс1опя.пепег1с) с1аяя Пепзогсебв№сгтопагупево ( ясагтс чоьй Мвтп() ( // Создать словарь для хранения имен и Фамилий // работников и их зарплаты. Этот индексатор служит для получения и установки значения элемента коллекции, а также для добавления в коллекцию нового элемента.

Однако в данном случае в качестве индекса служит ключ элемента, а не собственно индекс. При перечислении коллекции типа БоггебР1сс1опагу<ТК, ТЧ> из нее возвращаются пары "ключ — значение" в форме структуры КеуЧа1пера№г<ТК, ТЧ>. Напомним, что в этой структуре определяются два поля: Глава 24. Коллекции, перечислители и итератары 883 Яогсеб01ссаопагу<яггапч, боцЫе> басс = пен Яогтебпассаопагу<яггапч, боцЫе> () // Добавить элементы в коллекцию. баса. Кбб("Батлер, Джон", 73000) т б1сс.абб("Шварц, Сара", 59000)т б1сс.лбб("Пайк, Томас", 45000)т басс.лбб("Фрэнк, Эд", 99000)т // Получить коллекцию ключей, т.е.

Фамилий и имен. 1Со11есггоп<ясг1пч> с = б1сГ.Кеуят // Использовать ключи для получения значений, т.е. зарплаты. Хогеаси(ягг1пч якг 1п с) Сопяо1е.вг1те1.ьпе("(О), зарплата: (1:С)", ягг, б1сс(ясг))т Эта программа дает следующий результат: Батлер, Джон, зарплата: 573,000.00 Пайк, Томас, зарплата: 545,000.00 Фрэнк, Зд, зарплата: $99,000.00 Шварц, Сара, зарплата: 559,000.00 Как видите, список работников и их зарплаты отсортировав по ключу, в качестве которого в данном случае служит фамилия и имя работника. Класс Зол йесидяй<тК, тЧ> В кодлекции класса Яогсеб11яс<ТК, ТЧ> хранится отсортированный список пар "ключ — значение".

Это обобщенный эквивалент класса иеобобщеииой коллекции Боггебпаяг. В классе Боггеб11яг<тк, тч> реализуются интерфейсы 1РТсгбопагу, 1РТсс1опагу<ТК, ТЧ>, 1СФ11есс1оп, 1Со11ессаоп< КеуЧа1церааг<ТК, ТЧ», 1БпцтегаЬ1е и 1БпцюегаЬ1е< Кеуча1церааг<ТК, ТЧ». Размер коллекции типа Боггеб11яг<тк, тч> изменяется динамически, автоматически увеличиваясь по мере необходимости. класс Яогйебпаяг<тк, тч> подобен классу ЯоггебР1сг1опагу<тк, ТЧ>, ио у него другие рабочие характеристики.

В частности, класс Яогсеб11яс<ТК, ТЧ> использует меньше памяти, тогда как класс яоггебР1сгаопагу<тк, тч> позволяет быстрее вставлять неупорядоченные элементы в коллекцию. В классе Богсеб11ЯГ<ТК, ТЧ> предоставляется немало конструкторов. Ниже перечислеиы наиболее употребительные конструкторы этого класса. рцЫгс Богсебьаяг() рцы1с яоггебваяс(101сгаопагу<тк, тч> ббсс) рцЫ1с Яогтебваяг(1пс емкость) рцы1с яоггебт аяг(1союрагег<тк> совр) В первой форме конструктора создается пустой список с выбираемой по умолчанию первоначальной емкостью. Во второй форме конструктора создается отсортированный список с указанным количеством элементов бб с С. В третьей форме конструктора указывается емкость коллекции, создаваемой в виде отсортированного списка.

Если размер списка заранее известен, то, указав емкость создаваемой коллекции, можно исключить изменение размера списка во время выполнения, что, как правило, требует дополиитель- 884 Часть П. Бкблкотека С№ ных затрат вычислительных ресурсов. И в четвертой форме конструктора допускается указывать метод для сравнения объектов, содержащихся в списке. Емкость коллекции типа еоггег)е1эт<тк, ТЧ> увеличивается автоматически по мере необходимости, когда в список добавляются новые элементы. Если текущая емкость коллекции превышается, то она увеличивается. Преимущество указания емкости коллекции типа Багге<)Е1эс<тк, ТЧ> при ее создании заключается в снижении или полном исключении издержек на изменение размера коллекции.

Разумеется, указывать емкость коллекции целесообразно лишь в том случае, если заранее известно, сколько элементов требуется хранить в ней. В классе Богсес1Етэс<ТК, ТЧ> определяется ряд собственных методов, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Некоторые из наиболее употребительных методов этого класса перечислены в табл. 24.18. Следует иметь в ви)п, что пере- числитель, возвращаемый методом Сегеповегагог (), служит для перечисления пар "ключ— значение", хранящихся в отсортированном списке в виде объектов типа КеуЧа1церагг. Таблица 24.18.

Характеристики

Тип файла
DJVU-файл
Размер
6,78 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Г. Шилдт - С# 3.0 Полное руководство
C_sharp_3TCR_code
Apndx.lst
Chap2.lst
Chap3.lst
Chap4.lst
Chap5.lst
Chap6.lst
Chap7.lst
Chap8.lst
Chap9.lst
Chap10.lst
Chap11.lst
Chap12.lst
Chap13.lst
Chap14.lst
Chap15.lst
Chap16.lst
Chap17.lst
Chap18.lst
Chap19.lst
Chap20.lst
Chap21.lst
Chap22.lst
Chap23.lst
Chap24.lst
Chap25.lst
Chap26.lst
Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6455
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее