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.

-Chris.





More information about the core-libs-dev mailing list