Страницы

Поиск по вопросам

пятница, 28 февраля 2020 г.

Сортировка потока в обратном направлении

#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 чаров и отсортировали по их сумме

Комментариев нет:

Отправить комментарий