Bug in ArrayList iterator
Pavel Rappo
pavel.rappo at oracle.com
Wed Jan 7 11:20:51 UTC 2015
If I'm not mistaken LinkedList and Vector demonstrate exactly the same buggy
behaviour.
-Pavel
> On 7 Jan 2015, at 11:20, Chris Hegarty <chris.hegarty at oracle.com> wrote:
>
> 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