java-如何在使用set-hashmap时避免并发和其他错误

时间:2012-06-02 22:25:28

标签: java hashmap

我使用以下代码迭代hashmap-hashmap变量='context'

            Iterator iter = context.keySet().iterator();

            while(iter.hasNext())
            {
                String keystring = (String)iter.next();
                String varname= keystring.substring(0, keystring.indexOf("~"));
                String level= keystring.substring(keystring.indexOf("~")+1);
                    Integer levelno= Integer.parseInt(level);

                if(levelno==curr_level+1)
                {
                    iter.remove();
                    //we have found a variable of current level... this has to be removed from hashmap...
                    //context.remove(keystring);
                    //also the same variable has to be removed from the script engine as well...
                    scriptEngine.removeVariable(varname);

                }

            }

以上代码是否正确,尤其是从hashmap中删除数据?因为当我运行程序时,然后在hashmap中的不同(随机)值处生成一条错误消息,指出找不到特定值(在hashmap中)(该代码是独立的并与上面的代码一起使用)。 通过参考上面的代码,我必须记住什么,以避免从hashmap中删除数据时出错?

1 个答案:

答案 0 :(得分:1)

是的,这是在不破坏迭代器的情况下删除值的正确方法。

但是,这并不意味着除了已经显示的代码之外,整个应用程序中不会出现逻辑错误。