#java #сортировка #lambda #java_stream
На вход подается текстовая строка. Нужно вернуть слово с наибольшей сумой значений кодов символов. Сортировку нужно выполнить в обратном направлении. Использую метод 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]; }
Ответы
Ответ 1
Попробуйте так: 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 чаров и отсортировали по их сумме
Комментариев нет:
Отправить комментарий