我收到此代码的“并发修改异常”错误:

Iterator iterateBids = bidders.iterator();
     Person nextBidder;

bidders.add(bid.getBidder());

if (highestBid == null) {
    // There is no previous bid.
    highestBid = bid;
    while (iterateBids.hasNext()) {
        //nextBidder = (Person) iterateBids.next();
        ((Person) iterateBids.next()).bidUpdate(this, bid);
    }
    return true;
} else if (bid.getValue() > highestBid.getValue()) {
    // The bid is better than the previous one.
    highestBid = bid;
    while (iterateBids.hasNext()) {
        nextBidder = (Person) iterateBids.next();
        nextBidder.bidUpdate(this, bid);
    }
    return true;
}


bidders是一个包含Person的HashSet。该错误发生在“ nextBidder =(Person)iterateBids.next();”处
代码查找的出价高于当前出价。如果更高,则迭代投标者集并执行bidUpdate()方法。

我如何同时修改和迭代?

最佳答案

我唯一能看到的是您在此行之前获取了迭代器:

 bidders.add( bid.getBidder() );


...这显然是对bidders的修改。

关于java - HashSet中的并发修改异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15714075/

10-10 23:57