Сортировка строк без учета регистра - Stream API
На вход подается текст, в котором есть строки в нижнем и верхнем регистре, моя задача отсортировать строки по алфавиту.
Как я понимаю, что метод sorted() не очень подходит, и возможно надо как-то через filter() по первой букве, но пока не знаю как. Или все к одному регистру изменить? (тогда всё работает правильно).
Вывести всего первые 5 результатов.
Мой код:
String text = "РАО образуются после использования энергии на атомных электростанциях, при производстве " +
"топлива АЭС, выработке обогащенного урана, в исследовательских центрах, при использовании ядерного" +
" оружия, медицинских отходов и другой промышленности. На долю действий атомных электростанций по " +
"выработке ядерных отходов, приходится около 80% от общего объема в год.";
List.of(text.split("\\PL+"))
.stream()
.sorted()
.limit(5)
.forEach(System.out::println);
}
И его вывод:
АЭС
На
РАО
атомных
атомных
Ответы (1 шт):
Автор решения: Alina Klishyna
→ Ссылка
Немного покопавшись, я нашла вот такой вариант решения с помощью .sorted(String.CASE_INSENSITIVE_ORDER) или через .sorted((a, b) -> a.compareToIgnoreCase(b))
String text = "РАО образуются после использования энергии на атомных электростанциях, при производстве " +
"топлива АЭС, выработке обогащенного урана, в исследовательских центрах, при использовании ядерного" +
" оружия, медицинских отходов и другой промышленности. На долю действий атомных электростанций по " +
"выработке ядерных отходов, приходится около 80% от общего объема в год.";
List.of(text.split("\\PL+"))
.stream()
.sorted(String.CASE_INSENSITIVE_ORDER)
.limit(5)
.forEach(System.out::println);
Вывод:
атомных
атомных
АЭС
в
в