簡體   English   中英

HashSet中的並發修改異常

[英]Concurrent Modification Exception in HashSet

我收到此代碼的“並發修改異常”錯誤:

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的修改。

在第1行獲得迭代器后:

Iterator iterateBids = bidders.iterator();

您正在第4行修改數據結構:

bidders.add( bid.getBidder() );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM