Фрагмент не компилируется: toUpperCase и contains принадлежат String, а не Stream<String>. Для преобразования элементов нужен map, а для отбора — filter.
List<String> words = Arrays.asList("Привет", "Пока", "ОКО");
Фрагмент не компилируется: toUpperCase и contains принадлежат String, а не Stream<String>. Для преобразования элементов нужен map, а для отбора — filter.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
List<String> words = Arrays.asList("Привет", "Пока", "ОКО"); words.stream() .filter(word -> word.contains("о")) .toUpperCase() .contains("о") .forEach(System.out :: println);
Ответ
Фрагмент не компилируется: toUpperCase и contains принадлежат String, а не Stream<String>. Для преобразования элементов нужен map, а для отбора — filter.
Например, чтобы выбрать слова со строчной «о» и вывести их в верхнем регистре:
words.stream()
.filter(word -> word.indexOf('о') >= 0)
.map(word -> word.toUpperCase(Locale.ROOT))
.forEach(System.out::println);
Нужен импорт java.util.Locale. Результат — ПОКА; ОКО не проходит регистрозависимый исходный фильтр. Если после преобразования проверять наличие строчной «о», совпадений не будет. Для регистронезависимого поиска необходимо явно согласовать другую последовательность нормализации и проверки.