用于搜索(不同)整数Java的数据结构

|| 我正在寻找针对搜索操作优化的数据结构(在Java std-lib中)。我必须对其进行多次迭代,控制每个元素,并在特殊情况下将其删除。我已经使用了HashMap,但总是收到以下错误:
for (Edge e : edges) {
    if (special case)
    edges.remove(e);
}

java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:810)
at java.util.HashMap$KeyIterator.next(HashMap.java:845)
at package.name.TFinder.nN(TFinder.java:83)
at package.name.TFinder.fIT(TFinder.java:56)
at package.name.Main.main(Main.java:215)
    
已邀请:
        根据您的描述,您应该可以使用
HashMap
。关键是使用ѭ2删除条目:
for (Iterator<Map.Entry<Key,Value>> it = map.entrySet().iterator(); it.hasNext();)
{
    Map.Entry<Key,Value> entry = it.next();
    // process the entry
    if(need to delete the entry) 
    {
        it.remove();
    }
}
    
        当您在集合中添加/删除(/编辑)某项内容时会抛出该异常(例如,在for循环中)。 为了解决这个问题,您可以在多线程环境中使用“锁”。如果要在负责的循环内部进行操作,则可以考虑将数据结构复制到辅助(临时)结构中,然后仅对两个结构之一进行迭代,并对另一个结构进行所有必要的操作。 希望这可以帮助!     
        使用ConcurrentHashMap     

要回复问题请先登录注册