> On 25 Oct 2016, at 15:16, Martin Buchholz <marti...@google.com> wrote:
> 
> Actually, the ArrayList implementation updates fields only at the end of the 
> iteration, so if an action throws in the middle, the iterator is 
> semi-corrupted (in the sense that remove() will remove the "wrong" element 
> and next will return previously visited elements).

Good point.


> I think it's best to say in the spec that after calling forEachRemaining, 
> subsequent operations on the Iterator are undefined (whether or not the 
> action throws).


Yes (and for an action calling remove).


>   For consistency, we should probably keep the historic behavior that 
> remove() after forEachRemaining() removes the last element, even though that 
> is not to be encouraged.
> 

Agreed.

Paul.

Reply via email to