On 12/14/2012 02:00 PM, Paul Sandoz wrote:
On Dec 14, 2012, at 11:54 AM, Remi Forax <[email protected]> wrote:
We can't remove Collection.forEach without having perf issue because the stream
pipeline use it.
Iterator.forEach can be removed but it's a pity because it's really convenient,
And a case can be made performance wise too (there are optimal implementations
in the stream code base).
I have found that forEach, in general, has been very useful. Since it abstracts
away the details of traversal it has enabled better re-use of code.
The VM profiles the iterator when calling hasNext and next, if you end
up by using Iterator.forEach instead of one of its overriden methods,
you share the profile between part of the pipeline that should not be
shared. So using Iterator.forEach may be less performant or not
depending if forEach is overriden by a specific implementation or not.
Paul.
Rémi
a possble solution is to rename Iterator.forEach() to something else.
Please review
Thanks
cheers,
Rémi