如何计算Java中的特定单词?

How to do a counter of specific words in Java?

大家好,我正在开发一个项目,其中我有 4 个问题,其中有人可以评价为(好、好、普通和差),之后我需要检查有多少人投票为好,有多少人对于 4 个问题中的每一个,都被评为好、正常和差。所以我想计算一下检查 .txt 并计算单词(好、好、普通和差)在上面出现的次数。我试着像在 Python 中那样做,你只需要一本字典(或一个计数器),然后简单地做一些类似的事情: 字典["great"] += 1

但是,在 Java 中无法这样做。有谁知道任何与 Java 中的方法类似的方法,或者另一种简单的方法(无需创建大量变量来保存每个问题的答案)。

非常感谢您的帮助。

这在 Java 中是 100% 可能的。

使用 HashMap 存储值。

例如:

HashMap counts = new HashMap<String, Integer>();

counts.put("great", 0);
counts.put("good", 0);
counts.put("regular", 0);
counts.put("poor", 0);

现在,假设您读入了一个字符串 input

要增加计数器,请执行:

counts.put(input, counts.get(input) + 1);

这将使该位置的计数器增加 1。

使用counts.get(input)获取输入字符串的计数器。

在 java 8 中,compute 方法被添加到 Map 接口。它可能比 python 中的要复杂一些,但它可能是最接近 python 代码的:

Map<String, Integer> map = new HashMap<>();

String rating = ...

map.compute(rating, (key, oldValue) -> ((oldValue == null) ? 1 : oldValue+1));

作为第二个参数传递给 compute 的 lambda 表达式接收键映射到的旧值作为第二个参数或 null,如果没有映射。