加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读