подмассив
От: Pavel Dvorkin Россия  
Дата: 30.04.08 04:02
Оценка:
Опять я хочу то, что скорее всего невозможно. И все же

Есть массив

byte[] b = new byte[size];

Могу я сделать массив, представляющий собой кусок этого массива без копирования данных ? Что-то типа

byte[] c = subArray(b, start, end);

так, чтобы после этого

c[start] было тем же, что и b[0]
c[start + 1] было тем же, что и b[1]

и т.д.
With best regards
Pavel Dvorkin
Re: исправление
От: Pavel Dvorkin Россия  
Дата: 30.04.08 04:03
Оценка:
Наоборот, конечно

b[start] было тем же, что и c[0]
b[start + 1] было тем же, что и c[1]
With best regards
Pavel Dvorkin
Re: подмассив
От: Wax Россия  
Дата: 30.04.08 04:07
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Могу я сделать массив, представляющий собой кусок этого массива без копирования данных ?


Можно завести массив индексов и через него получить некий суррагат куска массива, однако не совсем понятно, зачем это вообще нужно.
Re: подмассив
От: Cyberax Марс  
Дата: 30.04.08 04:29
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>byte[] b = new byte[size];

PD>Могу я сделать массив, представляющий собой кусок этого массива без копирования данных ? Что-то типа
PD>byte[] c = subArray(b, start, end);
Нет.
Sapienti sat!
Re: подмассив
От: Sergey Astakhov Россия  
Дата: 30.04.08 05:39
Оценка: +2
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Могу я сделать массив, представляющий собой кусок этого массива без копирования данных ?


Простой массив — нет. Однако если оперировать не простыми массивами, а java.nio.ByteBuffer, то с ними можно. Пакет java.nio вообще позволяет избежать многих лишних копирований.
Re[2]: подмассив
От: Blazkowicz Россия  
Дата: 30.04.08 09:39
Оценка:
Здравствуйте, 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 ссылаться на одно и то же значение в памяти?
Re: подмассив
От: Vampiro  
Дата: 30.04.08 14:14
Оценка:
Здравствуйте, 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 пойти ?
теоретически только ссылки прийдется копировать, а обьекты останутся прежними.
Re[2]: подмассив
От: insighter ОАЭ  
Дата: 04.06.08 11:11
Оценка:
А>Я могу ошибаться, но разве данные примитивных типов возможно вообще "размножать" без копирования? Т. е. разве могут, например, переменные byte a=1 и byte b=1 ссылаться на одно и то же значение в памяти?

примитивные — не могут (если только не обертки конечно)
но массив, даже из примитивных типов — это все же Objесt, т.е. ссылка на некий объект в памяти.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
java шараги -> enterprise галеры, банки -> highload microservices + bigdata/ml
Re: подмассив
От: Rumata Россия http://atamur.livejournal.com
Дата: 04.06.08 11:59
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Опять я хочу то, что скорее всего невозможно. И все же


Можно. В некотором роде. Только нужно ли такой ценой? =)

sun.misc.Unsafe

См. например http://en.allexperts.com/q/Java-1046/2008/2/long-array-size.htm
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.