[PATCH] Inefficient ArrayList.subList().toArray() (original) (raw)

Martin Buchholz martinrb at google.com
Fri Jan 26 06:20:52 UTC 2018


Yes.

    public Object[] toArray() {
        checkForComodification();
        return Arrays.copyOfRange(root.elementData, offset, offset +

size); }

    @SuppressWarnings("unchecked")
    public <T> T[] toArray(T[] a) {
        checkForComodification();
        if (a.length < size)
            return (T[]) Arrays.copyOfRange(
                    root.elementData, offset, offset + size,

a.getClass()); System.arraycopy(root.elementData, offset, a, 0, size); if (a.length > size) a[size] = null; return a; }

It's still possible to find simple performance improvements in classes like ArrayList.

On Thu, Jan 25, 2018 at 4:41 PM, John Rose <john.r.rose at oracle.com> wrote:

On Jan 25, 2018, at 2:02 PM, Сергей Цыпанов <sergei.tsypanov at yandex.ru> wrote: > > + return (T[]) Arrays.copyOfRange(root.elementData, offset, size, a.getClass());

Giving this a quick glance: I think you may want s/size/offset+size/. There should be calls to checkForComodification.



More information about the core-libs-dev mailing list