2013-03-30 100 views
0

我得到的併發修改異常錯誤與此代碼:併發修改異常的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; 
} 

投標人是一個包含HashSet的人。該錯誤發生在「nextBidder =(Person)iterateBids.next();」 代碼查找比當前出價更高的出價。如果更高,它會遍歷投標人集合並執行bidUpdate()方法。

我如何修改和迭代在同一時間?

+0

約在哪裏你得到的例外呢? – Marco

回答

6

只有我能看到的是你這條線之前搶迭代器:

bidders.add(bid.getBidder()); 

...這顯然是bidders修改。

Iterator iterateBids = bidders.iterator(); 

要修改的數據結構,第4行:

+0

哦,所以你必須抓取迭代器後才做更改.THANK YOu – Splaty

5

獲得迭代器在1號線後

bidders.add(bid.getBidder()); 
+0

非常感謝! – Splaty