hashmap循环中删除元素
时间: 2023-05-03 12:04:47 浏览: 363
在使用HashMap循环中删除元素时,需要注意几点:
第一,不要在循环过程中直接删除元素,因为这会导致ConcurrentModificationException异常。这是因为在循环过程中修改了集合的结构,而Java的迭代器在发现这种情况时就会抛出该异常。
第二,可以使用Iterator来进行元素的删除。这种方法可以避免ConcurrentModificationException异常。具体来说,可以通过迭代器的remove()方法删除元素。代码示例如下:
Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, Object> entry = iterator.next();
String key = entry.getKey();
Object value = entry.getValue();
if (key.equals("xxx")) {
iterator.remove();
}
}
第三,如果不用迭代器,也可以使用另一个集合来暂存要删除的元素,最后再批量删除。代码示例如下:
List<String> toBeRemoved = new ArrayList<>();
for (String key : map.keySet()) {
Object value = map.get(key);
if (key.equals("xxx")) {
toBeRemoved.add(key);
}
}
for (String key : toBeRemoved) {
map.remove(key);
}
综上所述,在HashMap循环中删除元素时,可以使用迭代器或者另一个集合来暂存要删除的元素,避免ConcurrentModificationException异常的发生。
阅读全文