바이트 버퍼를 가지고 있고 Ints, Chars 등을 넣습니다. 얼마나 많은 공간이 필요한지 알지 못하기 때문에 바이트 버퍼를 동적으로 증가시키고 싶습니다. 어떻게 할 수 있습니까?바이트 버퍼의 할당 된 메모리를 확장하는 방법
예 : - 난 2 바이트 의 ByteBuffer를 가지고 - 나는의 ByteBuffer (ByteBuffer를 지금 가득) 에 문자를 추가 - 나는 4 바이트로의 ByteBuffer를 확장하여의 ByteBuffer에 정수를 추가. 시작시 6 바이트로 바이트 버퍼를 할당 할 수 없습니다.
ByteBuffer byteBuffer = ByteBuffer.allocate(2);
byteBuffer.putChar('a');
byteBuffer.putInt(1);
나는 많은 사람들이 몇 분 오래 내 질문에서 작업하는 방법에 대한 매우 감동입니다. 모두에게 고맙습니다. 또한 훌륭한 Plattform 인 Stackoverflow에도 감사드립니다.
여러분 모두가 물었습니다. 그래서 여기에서 설명하려고합니다. 내 용도 : DB에 저장하고 읽고 싶습니다 javaobjects (javaclasses)로 표시된 데이터를 구조화했습니다. 독서는 매우 빨라야합니다. 내가 지금까지했던 어떤 :
자바 직렬화 및 역 직렬화하고 BLOB에 저장 -> 잘하지만 너무 느리게 작동합니다.
kryo와 같은 제 3 자 시리얼 라이저 (매우 좋은)를 시도했지만, 내 케이스 (안드로이드)에서는 사용할 수 없습니다.
나의 새로운 전략 :-)
: 나는 내 수업 내 자신의 외부화을한다. 그게 내 클래스의 전체 데이터를 바이트 배열로 구성하고 싶습니다. 느려질 수 있습니다. 그런 다음 bytearray를 데이터베이스에 저장합니다. 독서를 할 때 나는 bytearray를 한 번에 읽고 싶습니다 (bytearray는 약 10k입니다). (나는 그들을 많이 가질 것이다). 그런 다음 구조화 된 데이터를 추출하기 위해 bytearray를 파싱합니다.putb와 readX와 같은 메소드 때문에 bytebuffer를 사용하는 것이 이상적이라고 생각했습니다. (X, chars, floats, int)
왜 다른 데이터 구조를 사용하지 않습니까? 동적 재 할당을 원하면 링크 된 목록을 사용하지 않는 이유는 무엇입니까? – John
용량이 4 또는 1024 바이트 또는 1MB 인 ByteBuffer를 할당 할 수없는 이유는 무엇입니까? –
BTW putChar()는 자주 사용되지 않기 때문에 왜 이렇게하는지에 따라 문자를 쓰는 것이 더 좋습니다. –