Как реализовать сортировку с помощью Stream API?

Есть метод, который выводит слова из текста в отсортированном виде (по длине) в том или ином порядке.

public List<String> sortWordsByLength(String text, Direction direction) {
    analyzer = new Analyzer();
    List<String> strings = analyzer.getWords(text);
    if (direction.equals(Direction.ASC)) {
        Comparator<String> comparing = Comparator.comparing(String::length);
        Collections.sort(strings, comparing);
    } else if (direction.equals(Direction.DESC)) {
        Comparator<String> reversed = Comparator.comparing(String::length).reversed();
        Collections.sort(strings, reversed);
    }
    return strings;
}

Как можно реализовать этот метод с помощью Stream API ?


Ответы (1 шт):

Автор решения: Sergey Gornostaev
Comparator<String> comparator = Comparator.comparingInt(String::length);
return analyzer.getWords(text)
               .stream()
               .sorted(direction.equals(Direction.ASC) ? comparator : comparator.reversed())
               .collect(Collectors.toList());
→ Ссылка