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

Г. Шилдт - С#4.0 Полное руководство (1160795), страница 203

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

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

Обратите внимание на применение класса обобщенной коллекции ЫЯС<Т> вместо класса необобщенной коллекции АггаубфяС. Реализовать интерфейс 1СошрагаЫе<Т>. сяьпо Яуясеяо пялпд Яуягеш.со11есг1опя.сепег1с1 О Реализовать обобшенный вариант интерфейса 1СошрагаЬ1е<Т>. с1аяя 1пчепТогу : 1СошрагаЬ1е<1пчепгогу> ( яггьпо паше; боиЫе сояс; лпс опбапбт рпЫРс 1пчепгогу(ягг1п9 и, СоиЫе с, 1пг Ы ( паше = и) аозТ = с," опсапб = Ь; роЫьс очеггьбе яггтпс тоЯсг1п9() ( геТигп ЯСТ1пЯ.Рогшаг("(0,-10)стоимость: (1,6:С) Наличие: (2)", паше, пояс, опЬапб); ) // Реализовать интерфейс 1СошрагаЬ1е<т>. рпЬ11с 1пС Сошрагето(1пчепяогу оЬ3) ( гегигп паше.Сошрагето(оЪз.паше)) ) ) с1аяя Сепегьс1СошрагаЬ1ебешо ягаггс чоьб Мазп() ( ьаяс<1пчептогу> 1пч = пен тляс<1пчептогу>() // Добавить элементы в список.

1пч.лес)(пеы 1пчепгогу("Кусачки", 5.95, 3))," Гпч.лбс((пеы 1пчепгогу("Отвертки", 8.29, 2)); 1пч.льЫ (пен 1пчепгогу("МолоткиГЬ 3.50, 4)); 1пч.лсЫ(пеы 1пчепгогу("Дрели", 19.88, 81); сопяо1е,хгьсес1пе("перечень товарных запасов ло сортировки:") Тогеась(1пчепгогу 1 1п ьпч) ( Сопзо1е.нггТещпе(" " е 1); ) Сопяо1е. Игггет ьпе (); 1/ Отсортировать список. 1пч.Яогг()) Сопяо1е.нгггесьпе("Перечень товарных запасов после сортировки:"); гогеасЬ(1пчепгогу 1 ьп гпч) ( 994 Часть )). Библиотека С() Сапзо1е. Хггсеъгне (" ) ) ) ь г)г Эта версия программы дает такой же результат, как и предыдущая, необобшенная версия.

Применение интерфейса ХСошрагег Для сортировки объектов определяемых пользователем классов зачастую проще всего реализовать в этих классах интерфейс 1СоврагаЬ1е. Тем не менее данную задачу можно решить и с помощью интерфейса 1Соглрагег. Для этой цели необходимо сначала создать класс, реализующий интерфейс 1Соврагег, а затем указать объект этого класса, когда потребуется сравнение. Интерфейс 1Соврагег существует в двух формах: обобщенной и необобщенной. Несмотря на сходство применения обеих форм данного интерфейса, между ними имеются некоторые, хотя и небольшие, отличия, рассматриваемые ниже.

Применение необобщенного интерфейса тсошрагег В необобгценном интерфейсе 1Сотрагег определяется только один метод, Соыраге () . 1пг Соираге(оЬ)ест х, оЬ)ест у) // Использовать необобпенный вариант интерфейса 1Соирагег. азгпу Бузгегм из1пд Бузсеи.со11ессгопз; В методе Соглраге () сравниваются объекты х и у. Для сортировки объектов по нарастающей конкретная реализация данного метода должна возвращать нулевое значение, если значения сравниваемых объектов равны; положительное — если значение обьекта х больше, чем у объекта у и отрицательное — если значение объекта х меньше, чем у объекта у.

А для сортировки по убывающей можно обратить результат сравнения объектов. Если же тип объекта х не подходит для сравнения с объектом у, то в методе Соирагето () может быть сгенерировано исключение АгопыепсЕхсергаоп. Объект типа 1Соврагег может быть указан при конструировании объекта класса Баггер Тес, при вызове метода Аггауъгз С. Богг (1Соырагег), а также в ряде других мест в классах коллекций. Главное преимущество применения интерфейса 1Соврагег заключаешься в том, что сортировке подлежат объекты тех классов, в которых интерфейс 1СопрагаЬ1е не реализуется.

Приведенный ниже пример программы является вариантом рассматривавшегося ранее необобшенного примера программы учета товарных запасов, переделанного с целью воспользоваться интерфейсом 1Совраге г для сортировки перечня товарных запасов. В этом варианте программы сначала создается класс сотр1пю в котором реализуется интерфейс 1Соглрагег и сравниваются два объекта класса 1птепгогу. А затем объект класса Соыр1от указывается в вызове метода Ботс () для сортировки перечня товарных запасов. Глава 25. Коллекции, перечислители и итераторы 995 О Создать объект типа 1Соырагег для объектов класса 1пчепкогу.

с1авв Соыр1пн : 1Соырагег ( г'У Реализовать интерфейс 1Соырагег. риЫ1с 1пс Сошраге(оЬЗесс х, оЬзесс у) ( 1пчепгогу. а, Ь; а = (1пчепгогу) х; Ь = (1пчепсогу) у! гесогп всгьпч.соыраге(а.паые, Ь.паке, зсгвп9Соырагввоп.огдьпа1) ) ) с1авв 1пнепсогу ( роЫас вгг1п9 паве; бооЬ1е сове; 1пс опЬапс(; роЫ1с 1пчепсогу(всг1п9 и, г(ооЫе с, гпс Ы паве = и) совг = с; оплапб = Ь; роЫлс очегг1г(е всггп9 тобсг1п9() ( гегогп бгг1п9.Гоыьас("(0,-10) Цена: (1,8:С) В наличии: (2)", паве, совс, оплапб)г с1авв 1СоырагегОеыо ( всас1с нолб Мавп() ( Сотр1пч сотр = пен Соыр1пн()г ЛггауЬлвс лпн = пен Лггаувавс(); // Добавить элементы в список. 1пч.ко(пен 1пчепсогу("Кусачки", 5.95, 3)); 1пч.кс(б(пен 1пчепсогу("Отвертки", 8.29, 2)); 1пч.йсЫ(пен 1пчепсогу("Молотки", 3.50, 4)); гпч.ЛСС(пен 1пчепсогу("Дрели", 19.88, 8)); Сопво1е.иг1гевапе("Перечень товарных запасов до сортировки:")Г богеасЬ(1пчепсогу 1 лп 1пч) ( Сопво1е.игтсе51пе(" " + 1); ) Сопво1е.

Игвсеьапе (); О Отсортировать список, используя интертейс 1Соырагег. 1пн.зогс(соыр); Сопво1е.иг1се51пе("Перечень товарных запасов после сортировки:"); богеасЬ(1пнепгогу 1 1п гпч) ( Сопво1е.иг1сепапе(" " + 1); ) Эта версия программы дает такой же результат, как и предыдущая. 996 Часть Н. Библиотека С№ Применение обобщенного интерфейса ХСошрагею<т> Интерфейс 1Совраге с<Т> является обобщенным вариантом интерфейса 1Саврагег. В нем определяется приведенный ниже обобщенный вариант метода Саврасе () . тпг Савраге(Т х, Т у) В этом методе сравниваются объекты х и у и возвращается нулевое значение, если значения сравниваемых объектов равны; положительное — если значение объекта х больше, чем у объекта у; и отрицательное — если значение объекта х меньше, чем у объекта у.

Ниже приведена обобщенная версия предыдущей программы учета товарных запасов, в которой теперь используется интерфейс 1Саврагег<Т>. Она дает такой же результат, как и необобщенная версия этой же программы. О Использовать обобвенный вариант интерфейаа 1соврагег<Т>. пяьпч Буягевт пя1пч Яуягев.Со11ессьопя.оепегпат О Создать объект типа 1Соврагег<Т> дпн объектов класса 1пчепгогу. с1аяя Совр1пн<Т> : 1Соврагег<Т> ноете Т : 1пнепгогу ( т'т' Реализовать интерфейс 1Соврагег<т>. рпЫ1с 1пг Саврасе(Т х, Т у) ( гегпгп яггппд.саврасе(х.паве, у.патпе, Ягг1пчсоврагпяоп.огт)1па1)т ) ) с1аяя 1пчепСогу ( рпЪ1тс яггьпд паве; СопЬ1е аояст Тпс опьапаб рпЫ1с 1пнепгогу(вСггпч и, СопЫе с, 1пг Ы ( патпе = и," сояс = а; опьапт) = Ьт ! рпЫ1с очегг1ае ягг1пч Тозггьпч() ( гегогп Ясггпд.Гогвас("(0,-10) цена: (1,6тс) В наличии: (2)", пвпе, сояс, опьапб)т с1аяя Яепегтс1Соврагегоево ( вгаг1а чо1С Ма1п() ( Совртпч<1пнепгогу> совр = пеи Совр1пн<1пчепгогу>() Ььяг<1пчепаогу> 1пч = пен Ььят<1пнепсогу>()т О )(сбавить элементы в апиаок.

1он.йп(С((ПЕИ 1ПЧЕПСОГу("КуСаЧКИгч 5.95, 3))т (вава 25. 'комекции, перечисаитеви и итераторы 997 хпч.ясЫ(лен 1пчепгогу("Отвертки", 8.29, 2)); хпч.)(<Ы (пен 1пчепхогу("Молотки", 3.50, 4)); хпч.)СО<((пеи 1пчепхогу("Дрели", 19.88, 8)); Сопзо1е.игххеьйпе("Перечень товарных запасов до сортировки:"); 1огеаоп(1пчепгогу 1 1п хпн) ( Сопво1е.игхгевьпе(" " + х); ) Сопво1е.

Хгхгеъхпе (); // Отсортировать список, используя интерфейс 1Соврагег. хпн.Бого(совр); Сопзо1е.Хгххеььпе("Перечень товарных запасов после сортировки:"); Гогеао)с(1пнепхогу х 1п хпн) ( Сопво1е.игххепъпе(" " + 1); ) Применение класса З~к2л1дСоп1рагег В простых примерах из этой главы указывать явно способ сравнения символьных строк совсем не обязательно. Но это может потребоваться в тех случаях, когда строки сохраняются в отсортированной коллекции или когда строки ищутся либо сортиру- ются в коллекции.

Так, если строки должны быть отсортированы с учетом настроек одной культурной среды, а затем их приходится искать с учетом настроек другой культурной среды, то во избежание ошибок, вероятнее всего, потребуется указать способ сравнения символьных строк. Аналогичная ситуация возникает и при хешировании коллекции. Для подобных (и других) случаев в конструкторах классов некоторых коллекций предусмотрена поддержка параметра типа 1соврахег. С целью явно указать способ сравнения символьных строк этому параметру передается в качестве аргумента экземпляр объекта класса Бгг1пс9Соврахег.

Класс БхгхпоСоврахех был подробно описан в главе 21 при рассмотрении вопросов сортировки и поиска в массивах. В этом классе реализуются интерфейсы 1Соврагех, 1соврахех<Бхг1пс1>, 1ес)оа11хусоврахех, а также 1ечпа11хусоврахег<Бхх1по>. Следовательно, экземпляр объекта типа Бхг1пс1Соврагег может быть передан параметру типа 1соврагег в качестве аргумента. В классе Бхг1пс9соврагег определяется несколько доступных только для чтения свойств, возвращающих экземпляр объекта типа Бгх1пс)Соврагег, который поддерживает различные способы сравнения символьных строк.

Как пояснялось в главе 21, к числу этих свойств относятся следующие: СоххепХСо1гохе, СоггепХСО1гоге1с9похеСазе, 1пчах1апХСи1гоге, 1пчаххапХСО1гоге1с9погеСаве, Охс)1па1, а также Охс)1па11с9погеСазе. Все эти свойства можно использовать для явного указания способа сравнения символьных строк. В качестве примера ниже показано, как коллекция типа Бохгес)1188<ткеу, Туа1ое> конструируется для хранения символьных строк, ключи которых сравниваются порядковым способом.

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

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

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

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6381
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее