我用这段代码得到了Concurrent Modification Exception错误:
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;
}
Run Code Online (Sandbox Code Playgroud)
bidders是一个包含Person的HashSet.错误发生在"nextBidder =(Person)iterateBids.next();" 该代码会查找高于当前出价的出价.如果更高,则迭代设置的投标人并执行bidUpdate()方法.
我如何同时修改和迭代?
我唯一能看到的是你在这一行之前抓住了迭代器:
bidders.add( bid.getBidder() );
Run Code Online (Sandbox Code Playgroud)
......这显然是对...的修改bidders.
在第1行获取迭代器后:
Iterator iterateBids = bidders.iterator();
Run Code Online (Sandbox Code Playgroud)
您正在修改第4行的数据结构:
bidders.add( bid.getBidder() );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1159 次 |
| 最近记录: |