Я хочу хранить большое количество одинаковых по размеру больших бинарных трехмерных изображений на Java.Мой текущий мыслительный процесс состоит в том, чтобы хранить информацию в каждом бите байта [].Поэтому в пространстве одного изображения я мог бы эффективно хранить 8 изображений (одно изображение на бит).У меня есть следующие циклы для получения / установки данных изображения.
Установить
final byte[] storedArray = organData.get(imageNumber);
final short[] binaryArray = getArray(binaryOrgan);
int i=0;
for (short binaryData : binaryArray) {
byte storedData = (byte)storedArray[i];
if (binaryData == 0)
storedData &= ~(1 << bitNumber);
else
storedData |= (1 << bitNumber);
storedArray[i] = storedData;
++i;
}
Получить
final byte[] storedArray = organData.get(imageNumber);
final short[] binaryArray = getArray(binaryImage);
int i=0;
for (short storedData : storedArray) {
binaryArray[i] = (short)((storedData >> bitNumber) & 1);
++i;
}
В настоящее время они работают нормально, но они слишком медленные,Есть ли способ ускорить это?Например, просто получить n-й бит каждого элемента в byte [] без итерации по байту []?В идеале я хотел бы получить это так же быстро, как поиск в HashMap (что я сейчас и использую).
PS Если есть другой способ эффективно хранить и быстро получать / устанавливать набордвоичные изображения, я все уши.