Фильтруйте startsWith("c"), преобразуйте через toUpperCase(Locale.ROOT), затем сортируйте. Для приведённого списка вывод будет C1, затем C2.
Фильтрация, приведение к верхнему регистру и сортировка строк
Фильтруйте startsWith("c"), преобразуйте через toUpperCase(Locale.ROOT), затем сортируйте. Для приведённого списка вывод будет C1, затем C2.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Дан массив строк. Требуется выполнить последовательную обработку данных:
- отбор: выбрать только те элементы, которые начинаются с символа "c" (с учётом регистра);
- преобразование: перевести отобранные строки в верхний регистр;
- упорядочивание: отсортировать полученные строки в лексикографическом порядке;
- вывод: вывести каждый элемент итоговой коллекции в консоль.
List<String> values = Arrays.asList("a1", "a2", "b1", "c2", "c1");
Ответ
Фильтруйте startsWith("c"), преобразуйте через toUpperCase(Locale.ROOT), затем сортируйте. Для приведённого списка вывод будет C1, затем C2.
values.stream()
.filter(s -> s.startsWith("c"))
.map(s -> s.toUpperCase(java.util.Locale.ROOT))
.sorted()
.forEachOrdered(System.out::println);
Предполагается, что элементы не null. Locale.ROOT делает преобразование независимым от локали машины. Фильтрация выполняется до изменения регистра, поэтому исходные строки с заглавной C не пройдут. sorted использует естественный порядок строк, а forEachOrdered сохраняет порядок вывода.