我目前在删除hashmap中的密钥时遇到问题。我在hashmap中创建了一个hashmap。我需要通过hashmap中hashmap内的值删除一个键。所以hashmap看起来像这样:
HashMap<String, String> people_attributes = new HashMap<String, String>();
Map<String, HashMap<String, String>> people = new HashMap<String, HashMap<String, String>>();
如果我尝试删除密钥,请将remove_name.add(p_name)
替换为people.remove(p_name)
,我会java.util.ConcurrentModificationException
。
现在,我使用arraylist添加需要删除的键,然后循环遍历arraylist以从hashmap中删除键。
到目前为止,这是解决方案:
for(String p_name : people.keySet()) { // search through people with attribute
for(String p_attributes : people.get(p_name).keySet()) { // search through attributes map
if(p_attributes.equals(g_att)) { // when current attributes equal to guess attribute
p_value = people.get(p_name).get(p_attributes);
if(!p_value.equals(g_value)) { // if current value doesn't equal to guess value
remove_name.add(p_name);
}
}
}
}
for(String r_name : remove_name) {
people.remove(r_name);
}
编辑:
问题:我知道我可以使用迭代器,就像在stackoverflow中提出的所有其他问题一样,但我不知道如何循环两次以进入people_attributes hashmap。