Bug in ArrayList iterator

Chris Hegarty chris.hegarty at oracle.com
Wed Jan 7 11:20:57 UTC 2015

On 07/01/15 10:57, Stanislav Baiduzhyi wrote:
> On Wednesday 07 January 2015 10:56:01 Chris Hegarty wrote:
>>            public boolean hasNext() {
>> -            return cursor != size;
>> +            return cursor != itrSize;
>>            }
> If the user will invoke list.remove(E) to remove current or previous element
> then iterator will be skipping some elements.

If this happens, then next() and/or remove() will throw CME.

  Throwing ConcurrentModification
> in hasNext() looks better in such case.

It is not clear to me that users would be expecting CME from hasNext(), 
whereas it is more next() and remove() is more obvious.


More information about the core-libs-dev mailing list