我的任务是计算输入文本中单词出现的频率。为了存储单词,我使用了一个集合TreeMap(用于自动排序)。
在寻找问题的解决方案时,我翻阅了 Kay Hortsmann 的 Java SE 8 参考书:

我对字符串感兴趣counts.put(word, counts.getOrDefault(word, 0) + 1);。
我试图为我的例子解释它,但它对我不起作用。我对正在发生的事情并不完全了解,因此在这个阶段我所能做的就是从不同的来源提取代码片段并尝试将它们连接在一起。
这是我的代码:
package firstPackage;
import java.io.*;
import java.util.*;
public class Test
{
public static void main(String[] args)
{
Integer randomNumber;
Console cons = System.console();
Map<Integer,Word> list = new TreeMap<>();
Random generator = new Random();
String myText = cons.readLine();
for (String word : myText.split(" "))
{
randomNumber = generator.nextInt(100001);
list.put(list.getOrDefault(0, word) + 1, word);
}
}
class Word
{
Integer count = 0;
String word;
Word(Integer count, String word)
{
this.count = count;
this.word = word;
}
}
}
在这种情况下,Eclipselist.put(list.getOrDefault(0, word) + 1, word);会在以下行中写入错误:
类型 Map 中的方法 getOrDefault(Object, Word) 不适用于参数 (int, String)。
我不明白我应该怎么做才能解决它。
如何编写代码list.put(list.getOrDefault(0, word) + 1, word);才能在我的程序中使用?我在哪里犯了错误?
您可以计算从控制台输入的字符串中每个单词的出现次数,如下所示:
wordToCount(你有-list,Hortsmann 有-counts)-这是TreeMap<String, Integer>。即key是String(单词本身),value是Integer(单词出现的次数)。wordToCount.getOrDefault(word, 0)返回保存在 number of occurrences 中的单词wordToCount的出现次数word,或者0如果单词尚不存在word。 之后,将 1 添加到获得的值(数字)并将结果写入key 。wordToCountwordToCountword这一行可以这样写: