java – 使用流进行单词计数
发布时间:2020-12-15 02:05:42 所属栏目:Java 来源:网络整理
导读:我试着用 Java中的Streams来计算单词.这是我试过的: public static int countWords(String s) { return s.chars().reduce((x,y) - { if((char)y == ' ') ++x; return x; }).orElse(0);} 但countWords(“asd”)返回97.为什么?我认为chars返回的IntStream实
我试着用
Java中的Streams来计算单词.这是我试过的:
public static int countWords(String s) { return s.chars().reduce((x,y) -> { if((char)y == ' ') ++x; return x; }).orElse(0); } 但countWords(“asd”)返回97.为什么?我认为chars返回的IntStream实际上是由chars组成的.所以,我只是将它转换为char.怎么了? 解决方法
虽然你的问题是指计算单词,但你的代码似乎是为了计算空格而设计的.如果这是你的意图那么我会建议:
input.chars().filter(Character::isSpaceChar).count(); 这可以避免代码中出现的许多转换并发症,如果这对您的域更有意义,可以将其更改为isWhitespace. 但是,如果您希望计算单词,那么最简单的解决方案是在空白上拆分然后计算非空单词: Pattern.compile("s+").splitAsStream(input).filter(word -> !word.isEmpty()).count(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |