boolean isA2Z(String str) {
return (str.chars().filter(i -> i >= 'a' && i <= 'z').distinct().count() == 26);
}
从方法名称看,它看起来像测试一个字符串是否包含来自a-> z的字母,但它看起来不正确?这个Java 8流代码是什么意思?
它从字符串中收集单个字符,然后返回流的计数。这如何工作?
boolean isA2Z(String str) {
return (str.chars().filter(i -> i >= 'a' && i <= 'z').distinct().count() == 26);
}
从方法名称看,它看起来像测试一个字符串是否包含来自a-> z的字母,但它看起来不正确?这个Java 8流代码是什么意思?
它从字符串中收集单个字符,然后返回流的计数。这如何工作?
str.chars()
- >返回IntStream
用于字符字符串
filter(i -> i >= 'a' && i <= 'z')
- >过滤,并只允许[A,Z](含)去下一个处理功能
distinct()
- >获得所有不同的值
count()
- >统计在这里通过的项目。
它在功能上检查字符串是否至少包含所有小的[a,z](含)至少一次。 (避免极端案例在这里)
比方说,如果字符串以下
“abbcdefghijklmnopqrstuvwxyz”
此方法将返回true。方法检查字符串是否包含从a到z的所有字母,无论它们是否重复。
下面是它如何工作的,一步一步:
换句话说,当且仅当输入字符串至少包含一个出现的每个小写字母从a到z时,该方法返回true。
流字符,只筛选a-z,非重复项并计数...看if == 26意思是所有英文字母都在那里...... – Idos
它测试字母表中每个字母是否至少存在一次。 – shmosel