每次添加一组新数据时,Java Hashmap都会清除

时间:2013-12-08 18:41:47

标签: java hashmap

我正在尝试存储在推文流中使用单词的总时间。每次收到推文时,我将其拆分为一个数组,然后迭代数组以将每个单词添加到散列映射,或者如果它已经存在则增加它的值。我的问题是,每次收到推文时,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
    }

}

3 个答案:

答案 0 :(得分:1)

it.remove();实际上会从HashMap中删除该条目。调用it.remove();不需要迭代Collection,它只应用于删除元素。

答案 1 :(得分:0)

似乎it.remove();造成这种情况。我评论了这一行,代码工作正常。

有谁可以解释发生了什么? 谢谢!

答案 2 :(得分:0)

it.remove()从基础集合中移除iterator.this语句返回的最后一个元素,删除集合