Java에서 밀도가 높은 가변 길이의 bitarray를 저장하는 매우 컴팩트 한 방법을 찾고 있습니다. 지금은 BitSet
을 사용하고 있지만, 평균 크기가 * 1.5 비트인데, n 비트 벡터의 저장 공간은입니다. 일반적으로 이것은 문제가되지 않지만,이 경우 저장된 비트 배열은 응용 프로그램의 메모리 사용량 중 중요한 부분입니다. 그래서, 그것들을 조금 더 작게 만드는 것이 도움이 될 것입니다.Java에서 매우 컴팩트 한 Bitarray
:
// BitSet's resizing code
private void ensureCapacity(int wordsRequired) {
if (words.length < wordsRequired) {
// Allocate larger of doubled size or required size
int request = Math.max(2 * words.length, wordsRequired);
words = Arrays.copyOf(words, request);
sizeIsSticky = false;
}
}
내가 쓸 수를 백엔드 데이터 구조를 좀 더 보수적으로 확장하는 내 자신의 BitSet 구현. 그러나 필자는 표준 클래스 라이브러리에 이미있는 기능을 복제하는 것을 정말로 싫어한다.
내가 힘든 시간을 표준 자바 라이브러리에있을 것입니다이 상상이있을 것이다. 실제로 그것이 설계된 것이 아닙니다. 그래도 제 3 자 라이브러리를 찾을 수있을 것입니다. – Pace
귀하의 경우 맞춤형 구현이 더 나은 선택이 될 것이라고 생각합니다. – cx0der