Как реализовать сортировку с помощью 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());