Java HashSet中的并发修改异常

Java HashSet中的并发修改异常,java,Java,我得到了以下代码的并发修改异常错误: Iterator iterateBids = bidders.iterator(); Person nextBidder; bidders.add(bid.getBidder()); if (highestBid == null) { // There is no previous bid. highestBid = bid; while (iterateBids.hasNext()) { //nextB

我得到了以下代码的并发修改异常错误:

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;
}
投标人是包含人员的哈希集。错误发生在“nextBidder=(Person)iterateBids.next();”处 代码查找高于当前出价的出价。如果更高,它将遍历投标人集并执行bidUpdate()方法


我是如何同时修改和迭代的?

我能看到的唯一一件事是,你抓住了这行前面的迭代器:

 bidders.add( bid.getBidder() );

…这显然是在第1行获得迭代器后对投标人的修改:

Iterator iterateBids = bidders.iterator();
您正在修改第4行的数据结构:

bidders.add( bid.getBidder() );

你从哪里得到这个异常呢?哦,所以你必须在做了更改之后才能获取迭代器。谢谢