Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Могу я сделать массив, представляющий собой кусок этого массива без копирования данных ?
Простой массив — нет. Однако если оперировать не простыми массивами, а java.nio.ByteBuffer, то с ними можно. Пакет java.nio вообще позволяет избежать многих лишних копирований.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>byte[] b = new byte[size]; PD>Могу я сделать массив, представляющий собой кусок этого массива без копирования данных ? Что-то типа PD>byte[] c = subArray(b, start, end);
Нет.
Здравствуйте, Wax, Вы писали:
Wax>Можно завести массив индексов и через него получить некий суррагат куска массива, однако не совсем понятно, зачем это вообще нужно.
Flyweight получится?
Re: подмассив
От:
Аноним
Дата:
30.04.08 11:17
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Есть массив PD>byte[] b = new byte[size]; PD>Могу я сделать массив, представляющий собой кусок этого массива без копирования данных ?
Я могу ошибаться, но разве данные примитивных типов возможно вообще "размножать" без копирования? Т. е. разве могут, например, переменные byte a=1 и byte b=1 ссылаться на одно и то же значение в памяти?
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Опять я хочу то, что скорее всего невозможно. И все же
PD>Есть массив
PD>byte[] b = new byte[size];
PD>Могу я сделать массив, представляющий собой кусок этого массива без копирования данных ? Что-то типа
PD>byte[] c = subArray(b, start, end);
PD>так, чтобы после этого
PD>c[start] было тем же, что и b[0] PD>c[start + 1] было тем же, что и b[1]
PD>и т.д.
а если через оболочки, такие как например java.lang.Byte пойти ?
теоретически только ссылки прийдется копировать, а обьекты останутся прежними.
А>Я могу ошибаться, но разве данные примитивных типов возможно вообще "размножать" без копирования? Т. е. разве могут, например, переменные byte a=1 и byte b=1 ссылаться на одно и то же значение в памяти?
примитивные — не могут (если только не обертки конечно)
но массив, даже из примитивных типов — это все же Objесt, т.е. ссылка на некий объект в памяти.