13. 如何在Java中统计字符串中的字符或单词出现的次数?
大约 2 分钟
在Java中,可以使用多种方法来统计字符串中的字符或单词的出现次数。以下是一些常见的方法:
1. 统计字符串中每个字符的出现次数
使用HashMap
来存储每个字符及其出现的次数。遍历字符串中的每个字符,并更新HashMap
中的计数。
示例代码
import java.util.HashMap;
import java.util.Map;
public class CharCountExample {
public static void main(String[] args) {
String text = "hello world";
Map<Character, Integer> charCountMap = new HashMap<>();
for (char c : text.toCharArray()) {
if (charCountMap.containsKey(c)) {
charCountMap.put(c, charCountMap.get(c) + 1);
} else {
charCountMap.put(c, 1);
}
}
for (Map.Entry<Character, Integer> entry : charCountMap.entrySet()) {
System.out.println("Character '" + entry.getKey() + "' occurs " + entry.getValue() + " times.");
}
}
}
输出
Character 'h' occurs 1 times.
Character 'e' occurs 1 times.
Character 'l' occurs 3 times.
Character 'o' occurs 2 times.
Character ' ' occurs 1 times.
Character 'w' occurs 1 times.
Character 'r' occurs 1 times.
Character 'd' occurs 1 times.
2. 统计字符串中每个单词的出现次数
同样可以使用HashMap
来存储每个单词及其出现的次数。首先使用split()
方法将字符串拆分为单词,然后更新HashMap
中的计数。
示例代码
import java.util.HashMap;
import java.util.Map;
public class WordCountExample {
public static void main(String[] args) {
String text = "hello world hello";
Map<String, Integer> wordCountMap = new HashMap<>();
String[] words = text.split("\\s+"); // 使用空白字符分割字符串
for (String word : words) {
if (wordCountMap.containsKey(word)) {
wordCountMap.put(word, wordCountMap.get(word) + 1);
} else {
wordCountMap.put(word, 1);
}
}
for (Map.Entry<String, Integer> entry : wordCountMap.entrySet()) {
System.out.println("Word '" + entry.getKey() + "' occurs " + entry.getValue() + " times.");
}
}
}
输出
Word 'hello' occurs 2 times.
Word 'world' occurs 1 times.
3. 使用Collections.frequency()
统计单个字符或单词的出现次数
如果你只关心某个特定字符或单词的出现次数,可以使用Collections.frequency()
方法。
示例代码
import java.util.Collections;
import java.util.Arrays;
public class FrequencyExample {
public static void main(String[] args) {
String text = "hello world hello";
// 统计特定单词的出现次数
int frequency = Collections.frequency(Arrays.asList(text.split("\\s+")), "hello");
System.out.println("Word 'hello' occurs " + frequency + " times.");
// 统计特定字符的出现次数
long charFrequency = text.chars().filter(ch -> ch == 'o').count();
System.out.println("Character 'o' occurs " + charFrequency + " times.");
}
}
输出
Word 'hello' occurs 2 times.
Character 'o' occurs 3 times.
总结
- 字符计数: 使用
HashMap
逐个字符遍历并统计出现次数。 - 单词计数: 使用
HashMap
和split()
方法将字符串拆分为单词,并统计每个单词的出现次数。 Collections.frequency()
: 可以直接用于统计列表中某个元素的频率。
这些方法可以根据具体需求进行选择和使用,能够有效地统计字符串中的字符或单词的出现次数。