是否可以更新hashmap中的值或在迭代时添加新元素?

时间:2013-08-01 05:27:47

标签: hashmap

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

1 个答案:

答案 0 :(得分: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,因此您可以通过所需的灵活性来管理它。