在java中使用foreach(后来新加的语法特征)遍历删除元素的时抛出异常,有一种方法是用一个集合先记着满足删除条件的元素。然后在逐一的在原来的集合中删除。这样的话需要额外的存储空间,遍历要删除的集合时。还要查找每个元素在原来集合中的位置,在使用某种底层数据结构的情况下,时间复杂度可能会变成二次方。更好的方法是使用迭代器。
上文中是要在map中删除key等于某个值的所有元素,如果改成删除value等于特定值的问题,可以使用Map.Entry<Tkey, TValue>类型的迭代器,这样可以同时访问到一对键值。