На вход подается текстовая строка. Нужно вернуть слово с наибольшей сумой значений кодов символов. Сортировку нужно выполнить в обратном направлении. Использую метод reversed(), но тогда не могу использовать метод chars(), так как w типа Object. Как правильно осуществить сортировку в обратном порядке?
public static String high(String s) {
return Stream.of(s.split(" "))
.sorted(Comparator.comparingInt(w -> w.chars().sum()).reversed())
.toArray(String[]::new)[0];
}
Ответ
Попробуйте так:
public static String high(String s) {
return Stream.of(s.split(" "))
.sorted(Comparator.comparing(String::chars, Comparator.comparingInt(IntStream::sum)).reversed())
.toArray(String[]::new)[0];
}
Данный метод первым аргументом принимает key extractor, т.е. какие данные нам нужно вытащить для сортировки, а второй аргумент принимает то, КАК мы будем сортировать. Ну то есть все просто, вытащили IntStream чаров и отсортировали по их сумме
Комментариев нет:
Отправить комментарий