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

Java中如何计算wordList(ArrayList)内单词的字母出现频率?

实现单词列表的字母频率统计

没问题,我来帮你搞定这个字母频率统计的需求~核心逻辑很清晰:先给26个字母各分配一个计数器,遍历所有单词的每个字符,对应字母的计数器加一,最后把计数器转换成要求的Integer类型ArrayList返回。

完整代码实现

import java.util.ArrayList;

public class LetterFrequencyCalculator {
    public ArrayList<Integer> freq(ArrayList<String> wordList) {
        // 初始化26个字母的计数器,默认都是0
        int[] letterCounts = new int[26];
        
        // 逐个处理每个单词
        for (String word : wordList) {
            // 遍历单词里的每一个字符
            for (char c : word.toCharArray()) {
                // 只处理小写字母,如果有大写可以先转小写
                if (Character.isLowerCase(c)) {
                    int index = c - 'a'; // 把字符转成0-25的索引
                    letterCounts[index]++;
                }
                // 要是需要兼容大写字母,加上这段就行:
                // else if (Character.isUpperCase(c)) {
                //     int index = c - 'A';
                //     letterCounts[index]++;
                // }
            }
        }
        
        // 把int数组转成Integer类型的ArrayList
        ArrayList<Integer> frequencyList = new ArrayList<>();
        for (int count : letterCounts) {
            frequencyList.add(count);
        }
        
        return frequencyList;
    }

    // 测试题目里的示例
    public static void main(String[] args) {
        ArrayList<String> testWords = new ArrayList<>();
        testWords.add("cat");
        testWords.add("dog");
        testWords.add("turtle");
        
        LetterFrequencyCalculator calculator = new LetterFrequencyCalculator();
        ArrayList<Integer> result = calculator.freq(testWords);
        System.out.println(result);
        // 输出和题目示例一致:[1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0]
    }
}

关键细节说明

  • 计数器初始化:用长度26的int数组刚好对应a到z,初始值默认是0,完美匹配每个字母的初始频率。
  • 字符索引转换:利用ASCII码的连续性,c - 'a'能直接把小写字母转换成0-25的数组索引,比如't' - 'a' = 19,对应数组的第20个位置(从0开始),正好对应题目里t出现3次的结果。
  • 大小写处理:代码里默认只处理小写字母,如果你的单词列表里有大写字母,可以加上注释里的大写判断逻辑,或者先把整个单词转成小写再处理(比如word.toLowerCase().toCharArray())。
  • 类型转换:因为要求返回Integer类型的ArrayList,所以需要把int数组里的每个元素自动装箱成Integer对象,添加到列表中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:14:33