2016-03-03 36 views
0

嘿家伙我正在开发一个项目,我有4个问题,有人可以评价为(好,好,普通和穷人),之后我需要检查有多少人投票同样优秀,多少人投票赞同,常规的和贫穷的4个问题。所以我想计算一下,检查.txt并计算这个词(好,好,普通和差)在它上面多少次。我试图像在Python中那样做,你只需要一个字典(或一个计数器),只需做一些类似的操作: dict [“great”] + = 1如何在Java中做特定单词的计数器?

但是,这是不可能的所以在Java中。有没有人知道任何与Java中的方法类似的方法,或者是其他简单的方法(无需创建大量变量来保存每个问题的答案)。

非常感谢您的帮助。

+3

为什么你认为在Java中不可能做到这一点? –

+2

这是几乎相同的想法,除了你需要一个在Java中的“地图” –

+0

真的吗?我正在尝试使用Map的类来做到这一点,但我收到了一些错误信息,猜测我做错了,我会看看这个,谢谢你们! –

回答

1

这在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)得到输入字符串的计数器。

2

在java 8中,方法被添加到Map接口。它可能会比在Python更复杂一些,但它可能是它获取到Python代码最接近:

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

String rating = ... 

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

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

相关问题