Interface BitMapExtractor
-
- All Known Subinterfaces:
BloomFilter<T>,CountingBloomFilter
- All Known Implementing Classes:
ArrayCountingBloomFilter,LayeredBloomFilter,SimpleBloomFilter,SparseBloomFilter,WrappedBloomFilter
- Functional Interface:
- This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
@FunctionalInterface public interface BitMapExtractor
Produces bit map longs for a Bloom filter.Each bit map is a little-endian long value representing a block of bits of in a filter.
The returned array will have length
ceil(m / 64)wheremis the number of bits in the filter andceilis the ceiling function. Bits 0-63 are in the first long. A value of 1 at a bit position indicates the bit index is enabled.The default implementations of the
makePredicate()andasBitMapArraymethods are slow and should be reimplemented in the implementing classes where possible.- Since:
- 4.5.0-M2
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default long[]asBitMapArray()Return a copy of the BitMapExtractor data as a bit map array.static BitMapExtractorfromBitMapArray(long... bitMaps)Creates a BitMapExtractor from an array of Long.static BitMapExtractorfromIndexExtractor(IndexExtractor extractor, int numberOfBits)Creates a BitMapExtractor from an IndexExtractor.default booleanprocessBitMapPairs(BitMapExtractor other, LongBiPredicate func)Applies thefuncto each bit map pair in order.booleanprocessBitMaps(java.util.function.LongPredicate predicate)Each bit map is passed to the predicate in order.
-
-
-
Method Detail
-
fromBitMapArray
static BitMapExtractor fromBitMapArray(long... bitMaps)
Creates a BitMapExtractor from an array of Long.- Parameters:
bitMaps- the bit maps to return.- Returns:
- a BitMapExtractor.
-
fromIndexExtractor
static BitMapExtractor fromIndexExtractor(IndexExtractor extractor, int numberOfBits)
Creates a BitMapExtractor from an IndexExtractor.- Parameters:
extractor- the IndexExtractor that specifies the indexes of the bits to enable.numberOfBits- the number of bits in the Bloom filter.- Returns:
- A BitMapExtractor that produces the bit maps equivalent of the Indices from the extractor.
-
asBitMapArray
default long[] asBitMapArray()
Return a copy of the BitMapExtractor data as a bit map array.The default implementation of this method is slow. It is recommended that implementing classes reimplement this method.
- Returns:
- An array of bit map data.
-
processBitMapPairs
default boolean processBitMapPairs(BitMapExtractor other, LongBiPredicate func)
Applies thefuncto each bit map pair in order. Will apply all of the bit maps from the other BitMapExtractor to this extractor. If this extractor does not have as many bit maps it will provide 0 (zero) for all excess calls to the LongBiPredicate.The default implementation of this method uses
asBitMapArray(). It is recommended that implementations of BitMapExtractor that have local arrays reimplement this method.- Parameters:
other- The other BitMapExtractor that provides the y values in the (x,y) pair.func- The function to apply.- Returns:
- A LongPredicate that tests this BitMapExtractor's bitmap values in order.
-
processBitMaps
boolean processBitMaps(java.util.function.LongPredicate predicate)
Each bit map is passed to the predicate in order. The predicate is applied to each bit map value, if the predicate returnsfalsethe execution is stopped,falseis returned, and no further bit maps are processed.If the extractor is empty this method will return true.
Any exceptions thrown by the action are relayed to the caller.
- Parameters:
predicate- the function to execute- Returns:
trueif all bit maps returnedtrue,falseotherwise.- Throws:
java.lang.NullPointerException- if the specified consumer is null
-
-