You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Java 8的数组流计算字符串中指定单词的总出现次数?

用Java 8流计算指定单词的频率总和

嘿,刚好能用Java 8的流API轻松搞定你的需求,我给你整理了一个简洁的实现方案:

import java.util.Arrays;
import java.util.Set;

public class WordFrequencySum {
    public static void main(String[] args) {
        String sentence = "The cat has black fur and black eyes";
        String[] words = sentence.trim().split("\\s+");
        String targetWords = "black cat";
        
        // 将目标单词转换为集合,提升匹配效率
        Set<String> targetWordSet = Set.of(targetWords.split("\\s+"));
        
        // 利用流统计目标单词的总出现次数
        long totalOccurrences = Arrays.stream(words)
                .filter(targetWordSet::contains)
                .count();
        
        System.out.println(totalOccurrences); // 输出:3
    }
}

关键步骤说明:

  • 目标单词集合化:把"black cat"拆分成单词数组后转成Set,这样后续判断单词是否属于目标列表时,contains操作的效率更高(时间复杂度O(1))。
  • 流处理统计:将句子拆分后的单词数组转为流,通过filter筛选出属于目标集合的单词,最后用count()直接得到总出现次数。

如果需要支持大小写不敏感的统计(比如句子中出现"Black"或"CAT"也能被统计),可以稍微修改过滤逻辑:

long totalOccurrences = Arrays.stream(words)
        .map(String::toLowerCase)
        .filter(word -> targetWordSet.stream().anyMatch(target -> target.equalsIgnoreCase(word)))
        .count();

这个版本会把所有单词统一转成小写后再匹配,确保大小写不同的同意思单词也能被统计到。

内容的提问来源于stack exchange,提问作者Juho M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:59:25