Java'da yoğun değişken uzunluklu bitarray depolamanın çok kompakt bir yolunu arıyorum. Şu anda, BitSet
kullanıyorum, ancak n boyutunda bir bit vektörü için ortalama 1.5 * n bitleri depolama alanı kullanıyor görünmektedir. Tipik olarak, bu bir problem değildir, ancak bu durumda depolanan bitardamarlar, uygulamanın bellek ayak izinin oldukça önemli bir parçasıdır. Yani, onları biraz daha küçük olmaya yardımcı olur.Java'da Çok Kompakt 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;
}
}
I yazabiliriz Arka uç veri yapısını daha muhafazakar bir şekilde ölçekleyen kendi alternatif uygulamam. Ancak, gerekmiyorsa standart sınıf kitaplıklarında bulunan işlevleri çoğaltmaktan gerçekten nefret ediyorum.
Ben zor bir zaman standart Java kütüphanede olacağını bunları hayal olurdu. Gerçekten bunun için tasarlandığı şey değil. Eminim üçüncü parti kütüphanesi bulabilirsin. – Pace
Bence sizin durumunuzda özel uygulama daha iyi bir bahis olacaktır. – cx0der