Символы строки как поток
Обработка символов строки в виде конвейера потока.
Сравнение кода
✕ Java 8
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (Character.isDigit(c)) {
process(c);
}
}
✓ Java 9+
str.chars()
.filter(Character::isDigit)
.forEach(c -> process((char) c));
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Цепочки вызовов
Применяйте filter, map, collect к потокам символов.
Декларативный стиль
Описывает что делать, а не как итерировать.
Поддержка Unicode
codePoints() корректно обрабатывает эмодзи и дополнительные символы.
Старый подход
Ручной цикл
Современный подход
Поток chars()
Начиная с JDK
9
Сложность
Начинающий
Поддержка JDK
Символы строки как поток
Доступно
Доступно с JDK 8+ (улучшено в 9+)
Как это работает
String.chars() возвращает IntStream значений символов, обеспечивая функциональную обработку. Для поддержки Unicode метод codePoints() корректно обрабатывает дополнительные символы.
Связанная документация
Доказательство