Приветствую! Который час ломаю голову как с помощью метотодов данных в задаче можно добиться такой сортировки. Приоткройте тайну, пожалуйста. Я ума не приложу зачем тут метод isGreaterThan(String a, String b). Для чего нам нужно сравнивать длину строки???
Сергей Ольдер
11 уровень
Зачем нужен метод - isGreaterThan(String a, String b) в задаче???
Решен
Комментарии (11)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Михаил Кузьмин
3 февраля 2019, 13:50решение
Метод сравнивает не длину строк. Он определяет, какая первая по алфавиту. Если первая - возвращает true, если вторая - false.
+2
RiccioMaster
31 января 2019, 19:42
https://javarush.com/groups/posts/1885-metod-compareto
0
Сергей Ольдер
1 февраля 2019, 05:18
Перед тем как написать здесь я ни один десяток раз обращаюсь к гуглу и эту статью я тоже читал и там сказано "Одним из самых простых и эффективных способов отсортировать массив объектов является метод sort() класса Arrays, а коллекцию объектов в виде списка – аналогичный метод класса Collections." НО! Если я буду использовать sort от Collection, то опять таки, зачем мне метод - isGreaterThan??? Он ведь сортирует слова по их длине, а здесь нужно отсортировать по алфавиту. Дебет с кредитом не сходится у меня в голове.
0
RiccioMaster
1 февраля 2019, 07:43решение
Серёжа, может быть я не прав - пусть старшие товарищи поправят.
Но мне кажется, что задачи нам показывают "изнанку" кода - Например, упомянутый метод sort() не творит какую-то магию. В нем так же заключена банальная сортировка. Не пузырьком, другой алгоритм, но его оформили в метод и предоставили программистам лаконичную возможность вызова.
Так же и здесь. Если я правильно понимаю метод isGreaterThan сравнивает не длину строк, а буквы по их коду в системе Unicode в десятичном исчислении. Он это делает через метод compareTo():
Вывод:
Таким образом метод isGreaterThan возвращает булево значение (true или false) и если оно истинно - меняем слова местами, если ложно - ничего не делаем.
+4
RiccioMaster
1 февраля 2019, 08:05
Для справки и проверки: таблица.
0
Pavlo Plynko Java-разработчик в CodeGym Expert
1 февраля 2019, 08:44решение
да, compareTo() сравнивает не длину строки.
+2
Сергей Ольдер
4 февраля 2019, 06:00
Попробуй отсортировать им слова в примере. Он отсортирует их по длине. Если нужно отсортировать слова по алфавиту то это нужен бубен в виде CharAt, но это каждую букву нужно представлять как строку т.к в аргументах именно String указано.
0
Pavlo Plynko Java-разработчик в CodeGym Expert
4 февраля 2019, 08:18
Попробовал:
Вывод:
По твоей логике, одно значение должно было быть положительным, одно - отрицательным.
Но, как видишь, сортирует по алфавиту, а не по длине. Об этом и в документации к методу compareTo() написано. +1
Сергей Ольдер
4 февраля 2019, 15:06
Каюсь, был не прав. Я не правильно сортировал, поэтому метод выдавал не тот результат. Некоторые задачи очень туго доходят. Надеюсь это нормально и я не безнадежен.
0
Pavlo Plynko Java-разработчик в CodeGym Expert
4 февраля 2019, 16:03
Нормально :)
0
Сергей Ольдер
4 февраля 2019, 16:08
Я ее решил!))) И у такой задачи коэффициент 2,07. Почему-то когда у задачи коэффициент маленький мне она трудно дается, если наоборот, то легко. Не все, но довольно часто это подмечаю.
0