我正在尝试计算TreeMap
中单词的频率。我正在读取一个文件并将这些行传递给StringTokenizer
,然后将其转换为字符串逐字(currentword)。
如果currentword = "one"
然后将其放在地图上,但如果第二个单词再次为one
而不是取frequency
= 1,则会再次获得null
!
final StringTokenizer parser = new StringTokenizer(currentLine, " \0\t\n\r\f.,;:!?'");
while (parser.hasMoreTokens()) {
String currentWord = parser.nextToken();
Integer frequency = frequencyMap.get(currentWord);
if (frequency == null) {
frequency = 0;
}
frequency++;
frequencyMap.put(currentWord, frequency);
}
答案 0 :(得分:3)
看起来它对我来说很好用:
import java.util.*;
public class Test
{
public static void main(String[] args) {
Map<String, Integer> map = new TreeMap<String, Integer>();
String[] words = { "x", "one", "y", "one" };
for (String word : words) {
Integer frequency = map.get(word);
if (frequency == null) {
frequency = 0;
}
frequency++;
map.put(word, frequency);
}
System.out.println(map);
}
}
输出:
{one=2, x=1, y=1}
看看你是否可以提出一个类似的简短但完整的程序来证明你的问题 - 可能会逐渐将你的“真实”代码减少到类似的东西。