我问了一个question关于计算一个单词在ArrayList中的次数:
ACU ACU ACU ACU ACY ACY AER AER AER AGC
所以对于
ACU我们会得到4,
ACY我们会得到2,
AER我们会得到3,
AGC我们将获得1.
我得到了一些帮助,但我无法使其发挥作用 达伦给了我一个非常重要的答案:
Map<String, Integer>wordCount = new HashMap<String, int>();
for(String seq : yourWordList){
wordCount.put(seq, wordCount.get(seq++));
}
但在wordCount.put(seq, wordCount.get(seq++));
部分
我得到一个错误,无法从String转换为int,我试图修改代码工作
但我的数字不正确
ACU 0 ACU 1 ACU 1 ACU 1 ACY 1 ACY 2 AER 2 AER 3 AER 3
int value=0;
Map<String, Integer>wordCount = new HashMap<String, Integer>();
for(String seq : WordList){
Set<String> set = wordCount.keySet();
value = set.size();
wordCount.put(seq, value));
}
请帮我解决这个问题。谢谢大家。
答案 0 :(得分:3)
你想要的是:
Map<String, Integer>wordCount = new HashMap<String, Integer>();
for (String seq : yourWordList) {
Integer count = wordCount.get(seq);
wordCount.put(seq, count == null ? 1 : count + 1);
}
Map
来自String
到Integer
。 Integer
是不可变的,因此您无法将其递增。您必须检索当前值,增加它并将其放回。你试图打电话给wordCount.get(seq++)
,这没什么意义。必须在get()
中传递String
(对于此类Map
),并且无论如何都不能在不可变++
上使用Integer
。
答案 1 :(得分:2)
wordCount.get(seq++)
可能是问题 - 尝试递增get方法的返回值(现在你显然试图增加String参数,触发错误。尝试将其更改为wordCount.get(seq)+1
答案 2 :(得分:2)