java - 如何计算字符串中字符的频率?

标签 java string key-value

我需要编写某种循环来计算字符串中每个字母的频率。
例如:“aasjjikkk”将计算 2 个“a”、1 个“s”、2 个“j”、1 个“i”、3 个“k”。最终像这样的 id 最终会出现在以字符为键、计数为值的 map 中。任何好主意如何做到这一点?

最佳答案

您可以使用 java Map 并将 char 映射到 int。然后,您可以遍历字符串中的字符并检查它们是否已添加到 map 中,如果有,则可以增加其值。

例如:

HashMap<Character, Integer> map = new HashMap<Character, Integer>();
String s = "aasjjikkk";
for (int i = 0; i < s.length(); i++) {
    char c = s.charAt(i);
    Integer val = map.get(c);
    if (val != null) {
        map.put(c, new Integer(val + 1));
    }
    else {
       map.put(c, 1);
   }
}

最后,您将统计您遇到的所有字符,并从中提取它们的频率。

或者,您可以使用 Bozho 的解决方案,即使用 Multiset 并计算总出现次数。

关于java - 如何计算字符串中字符的频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6712587/

相关文章:

Java Web 应用程序调试工具

string - 如何在 Scala 字符串中转义特殊符号?

Python Pandas - 使用字典列在数据框中附加/更新键值对

java - 如何在 Spring Rest 服务中检索基本身份验证参数

java - 访问 Java 应用程序标题栏的任何方式(附加按钮的放置等)

java - httpclient 可以使用当前登录用户自动创建授权 header 作为 java URLConnection 吗?

objective-c - 附加 CString 是否比附加 ObjC 字符串更好?

c# - .NET StringBuilder - 检查是否以字符串结尾

python - 根据 Python 字典中的键值检查列表中的值

java - 如何使用Spring Boot获取不带等号的查询字符串?