Сортировка строк без учета регистра - 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);

Вывод:

атомных
атомных
АЭС
в
в
→ Ссылка