代码对比
✕ 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。
函数式风格
声明式字符处理,无命令式循环。
可组合
与其他流操作无缝组合。
旧方式
手动循环
现代方式
chars() 流
自 JDK
9
难度
入门
JDK 支持
字符串字符流
可用
自 JDK 8+ 起可用(JDK 9+ 中有所改进)
工作原理
String.chars() 返回字符值的 IntStream,支持函数式字符处理。使用 (char) 转换或 Character 方法处理各个字符。
相关文档