|
Заблокирован
|
|
Метод сравнения объектов пользовательского класса02.08.2020, 16:48. Показов 7424. Ответов 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 | |
|
Дополнительный метод сравнения объектов класса Вектор объектов пользовательского класса
Очистка вектора объектов пользовательского класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|