0

我有这个哈希图,我想在迭代它时更新值,如果可能的话添加新元素。我相信它会抛出一个并发修改异常。那么,有没有办法实现这一点,或者这是不可能的?

4

1 回答 1

0

据我所知,您能做的最好的事情就是在骑车时删除和更新值。尝试以下

public static void main(String[] args) {

    HashMap<String, String> map = new HashMap<String, String>();
    map.put("one", "lemon");
    map.put("two", "orange");
    map.put("three", "kiwi");

    Iterator<Entry<String, String>> it = map.entrySet().iterator();

    while (it.hasNext())
    {

        Map.Entry entry = (Map.Entry) it.next();

        String key = (String)entry.getKey();

        //removal
        if(key.equals("one"))
            it.remove();

        //update
        if(key.equals("two"))
            entry.setValue("lime");

    }
}

在地图中插入新元素将导致异常。如果你需要这样做,你应该用第一个的值填充第二个 HashMap,并随意修改它。换句话说,您可以在循环第一个 HashMap 的同时构建第二个 HashMap,因此您可以以所需的灵活性对其进行管理。

于 2013-08-01T06:55:22.260 回答