Java中更好的bitmaps压缩类库:RoaringBitmap
jopen
10年前
Bitsets也叫作bitmaps,通常被用作快速的数据结构。 不幸的是,它们会使用太多内存。为了弥补,我们经常使用压缩的位图(bitmaps)。
Roaring bitmaps压缩的位图往往超越常规的压缩位图,比如:WAH, EWAH 或 Concise。在一些情况下,Roaring bitmaps可以是几百倍更快的速度,它们通常提供显著更好的压缩。这个类库已经在 Apache Spark (https://spark.apache.org/) 和 Druid.io (http://druid.io/)中使用。Apache Lucene (http://lucene.apache.org/) 也使用了 Roaring bitmaps,尽管他们有自己的独立实现:https://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/util/RoaringDocIdSet.java?view=markup&pathrev=1629606
import org.roaringbitmap.*; //... RoaringBitmap rr = RoaringBitmap.bitmapOf(1,2,3,1000); RoaringBitmap rr2 = new RoaringBitmap(); for(int k = 4000; k<4255;++k) rr2.add(k); RoaringBitmap rror = RoaringBitmap.or(rr, rr2);