У меня есть базовый код Hashmap, который по какой-то причине не работает.get in Hashmap возвращает null
ConcurrentHashMap<Bitmap, byte[]> pixels = new ConcurrentHashMap<Bitmap, byte[]>();
это ключ растровый и значение являются его байты, которые я получаю, используя этот код:
public byte[] getPixels(Bitmap bmp) {
int bytes = bmp.getRowBytes() * bmp.getHeight();
buffer = ByteBuffer.allocateDirect(bytes);
bmp.copyPixelsToBuffer(buffer);
buffer.clear();
return buffer.array();
}
В HashMap для всех растровых изображений я я поставил:
pixels.put(bitmap1, getPixels(b));
И когда я хочу получить значение (байты) назад, я делаю:
byte[] pixelData = pixels.get(bitmap1);
и по какой-то нечетной причине его всегда null !, почему? Я пробовал разные растровые изображения, все они возвращают null, и это то же растровое изображение.
Erm ... Вы не можете вызвать '.array()' в прямом распределенном 'ByteBuffer'. Там что-то происходит. – fge
@fge Я могу, код работает и работал до того, как я использовал hashmap. Это часть этого решения: http: // stackoverflow.com/a/29061657/4024143 – SpoocyCrep