RFR 8037106: Optimize Arrays.asList(...).forEach (original) (raw)

Paul Sandoz paul.sandoz at oracle.com
Fri Mar 14 16:10:48 UTC 2014


On Mar 14, 2014, at 4:46 PM, Martin Buchholz <martinrb at google.com> wrote:

Looks good to me.

Thanks.

I'm willing to believe for-loop over array is as efficient as fortran-style loop

+ for (E e : a) { + action.accept(e); + }

Yeah, i previously went through a whole bunch of code replacing such fortran-style loops with 'foreach' style based on automated code analysis.

but then you could change the other loops as well, e.g. in indexOf

+ final int size = a.length; + for (int i = 0; i < size; i++) { I like to write this using the idiom for (int i = 0, size = ...; i < size; i++)

I copied over code from ArrayList, but presumably the following is sufficient:

    @Override
    public void replaceAll(UnaryOperator<E> operator) {
        Objects.requireNonNull(operator);
        final E[] a = this.a;
        for (int i = 0; i < a.length; i++) {
            a[i] = operator.apply(a[i]);
        }
    }

? no need for a local size variable.

I changed my local patch to do the above.

Paul.



More information about the core-libs-dev mailing list