|
Заблокирован
|
|
Метод сравнения объектов пользовательского класса02.08.2020, 16:48. Показов 7370. Ответов 27
Метки нет (Все метки)
Нужно написать метод сравнения достаточно сложных объектов пользовательского класса - для сортировки массива этих объектов.
Вижу, что есть два интерфейса: IComparable и IComparer А может и ещё что-то есть (не знаю). Какой из них использовать? P.S.1. Не знаю важно это или нет, но сообщаю - эти объекты с рекурсией, то бишь, содержат в себе вложенные объекты того же типа (точнее - массив таких объектов). P.S.2. Можно, конечно, вообще никакие интерфейсы не притягивать, но захотелось сделать правильно - задача-то стандартная и значит вроде нужно обозначить использование стандартного интерфейса))) Какого? ![]() Добавлено через 12 минут P.S.3. А тут ваще не получится "зацикливания"? Есть массив объектов. Каждый элемент массива тоже содержит массив объектов этого типа (возможно и нулевой длины). Чтобы отсортировать массив, нужно иметь метод сравнения элементов. Но чтобы сравнивать элементы массива - объекты - нужно ведь уметь сортировать массив объектов, вложенный в каждый элемент массива (объект) ???)))
0
|
|
| 02.08.2020, 16:48 | |
|
Ответы с готовыми решениями:
27
Во всех классах реализовать интерфейс IComparable и перегрузить метод CompareTo для сравнения объектов
|
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
|||
| 04.08.2020, 21:52 | |||
this тут больше декоративный характер имеет, чтобы программисту было понятно, что данный элемент объявлен именно в этом классе, а не в базовом классе. Что касается else, то, наверное, это сделано в угоду масштабируемости программы. Если по какой то причине в будущем вместо return в каждой строке будет сохранение значения в переменную, то придется переписывать больше кода.
1
|
|||
|
Заблокирован
|
||||||
| 05.08.2020, 15:04 [ТС] | ||||||
|
Попутная тема - сравнение на равенство - переопределение метода Equals ит.п.
Поскольку более-менее разобрался методами Compare и CompareTo, и реализовал в нужном классе метод CompareTo, то есть соблазн не делать ещё и метод Equals с полной реализацией, а просто использовать уже определенный метод CompareTo Ведь он при равенстве выдает ноль. То есть, код такой: Кликните здесь для просмотра всего текста
Нет ли в таком подходе крамолы?
0
|
||||||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||||||||
| 05.08.2020, 16:44 | ||||||||
|
Небольшой рефакторинг:
1
|
||||||||
|
Заблокирован
|
||||||
| 05.08.2020, 17:20 [ТС] | ||||||
|
kolorotur,
вы какого-то мутанта зафигачили) Наверное, вы имели ввиду вот это: Кликните здесь для просмотра всего текста
0
|
||||||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 05.08.2020, 22:19 | |
|
titan4ik, в чем мутация? В опечатке чтоли?
Ну простите - бывает. Первый метод int должен возвращать.
0
|
|
|
Заблокирован
|
||
| 05.08.2020, 22:32 [ТС] | ||
![]() Для справки - в случае с док майкросфта я теперь только 5 раз думаю, что не понял.
0
|
||
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
|
| 05.08.2020, 22:37 | |
|
titan4ik, мне кажется вы зря пытаетесь найти "идеальные решения", тратя на это кучу времени. Делайте так как кажется правильным, когда наступите на какие-нибудь грабли, исправитесь, или когда наберетесь опыта, это будет гораздо быстрее, чем заниматься подобными теоретическими изысканиями.
0
|
|
|
Заблокирован
|
|
| 05.08.2020, 22:46 [ТС] | |
|
QuakerRUS,
постараюсь учесть, но это субъективно наверное. Я-то считаю, что занимаюсь не теорией а сугубо практикой. А грабли у меня из каждой пятки пучками торчат).
0
|
|
| 05.08.2020, 22:46 | |
|
Дополнительный метод сравнения объектов класса Вектор объектов пользовательского класса
Очистка вектора объектов пользовательского класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|