我正在尝试存储在推文流中使用单词的总时间。每次收到推文时,我将其拆分为一个数组,然后迭代数组以将每个单词添加到散列映射,或者如果它已经存在则增加它的值。我的问题是,每次收到推文时,hashmap看起来都是空白的。
private HashMap<String, Integer> map;
private void createDataStore() {
map = new HashMap<String, Integer>();
}
protected void addKeywords(Status status) {
// get tweet
String str = status.getText();
// split into an array
String[] splited = str.split("\\s+");
// vars used in loop
String thisStr;
int wordTot;
for (int i = 0; i < splited.length; i++) {
// get word from array
thisStr = splited[i];
// check if the word is in the hashmap
if (!map.containsKey(thisStr)) {
// already exists
map.put(thisStr, 1);
} else {
// its a new word!
wordTot = map.get(thisStr);
wordTot++;
map.put(thisStr, wordTot);
}
}
}
private void traceTotals() {
System.out.println("trace totals");
Iterator<Entry<String, Integer>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pairs = (Map.Entry) it.next();
System.out.println(pairs.getKey() + " = " + pairs.getValue());
it.remove(); // avoids a ConcurrentModificationException
}
}
答案 0 :(得分:1)
it.remove();
实际上会从HashMap
中删除该条目。调用it.remove();
不需要迭代Collection
,它只应用于删除元素。
答案 1 :(得分:0)
似乎it.remove();造成这种情况。我评论了这一行,代码工作正常。
有谁可以解释发生了什么? 谢谢!
答案 2 :(得分:0)
it.remove()从基础集合中移除iterator.this语句返回的最后一个元素,删除集合