Bug in ArrayList iterator
Stanislav Baiduzhyi
sbaiduzh at redhat.com
Wed Jan 7 11:38:03 UTC 2015
On Wednesday 07 January 2015 12:29:44 Mario Torre wrote:
> > Yes, but that exactly how it works now, that's why second invocation of
> > hasNext() returns false and we can see the issue Remi is talking about. If
> > hasNext() will be throwing ConcurrentModification than will work as early
> > warning system that something is wrong with this iterator.
>
> But hasNext isn't modifying things, why should it throw
> ConcurrentModification? I would find it very confusing, and also
> likely non backward compatible.
Yes. More than that, guide page says directly that you should not use for-each
for filtering [1]. Which means that what Remi has reported is not an issue,
just incorrectly applied for-each iterator, and probably the least effective
way to filter out the list. But as discussion went on with this in search of
solution - I still cannot see any other way to fix it than throw
ConcurrentModification from hasNext().
[1]:
http://docs.oracle.com/javase/8/docs/technotes/guides/language/foreach.html
--
Regards,
Stas
More information about the core-libs-dev
mailing list