[英]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.