Class BitMap
int
indices into Bloom filter bit positions and visa versa.
The functions view an array of longs as a collection of bit maps each containing 64 bits. The bits are arranged in memory as a little-endian long value. This matches the requirements of the BitMapProducer interface.
- Since:
- 4.5
-
Method Summary
Modifier and TypeMethodDescriptionstatic boolean
contains
(long[] bitMaps, int bitIndex) Checks if the specified index bit is enabled in the array of bit maps.static long
getLongBit
(int bitIndex) Gets the filter bit mask for the specified bit index assuming the filter is using 64-bit longs to store bits starting at index 0.static int
getLongIndex
(int bitIndex) Gets the filter index for the specified bit index assuming the filter is using 64-bit longs to store bits starting at index 0.static int
mod
(long dividend, int divisor) Performs a modulus calculation on an unsigned long and a positive integer divisor.static int
numberOfBitMaps
(int numberOfBits) Calculates the number of bit maps (longs) required for the numberOfBits parameter.static void
set
(long[] bitMaps, int bitIndex) Sets the bit in the bit maps.
-
Method Details
-
contains
Checks if the specified index bit is enabled in the array of bit maps. If the bit specified by bitIndex is not in the bit map false is returned.- Parameters:
bitMaps
- The array of bit maps.bitIndex
- the index of the bit to locate.- Returns:
true
if the bit is enabled,false
otherwise.- Throws:
IndexOutOfBoundsException
- if bitIndex specifies a bit not in the range being tracked.
-
getLongBit
Gets the filter bit mask for the specified bit index assuming the filter is using 64-bit longs to store bits starting at index 0. The returned value is along
with only 1 bit set.The index is assumed to be positive. For a positive index the result will match
1L << (bitIndex % 64)
.If the input is negative the behavior is not defined.
- Parameters:
bitIndex
- the bit index (assumed to be positive)- Returns:
- the filter bit
-
getLongIndex
Gets the filter index for the specified bit index assuming the filter is using 64-bit longs to store bits starting at index 0.The index is assumed to be positive. For a positive index the result will match
bitIndex / 64
.The divide is performed using bit shifts. If the input is negative the behavior is not defined.
- Parameters:
bitIndex
- the bit index (assumed to be positive)- Returns:
- the index of the bit map in an array of bit maps.
-
mod
Performs a modulus calculation on an unsigned long and a positive integer divisor.This method computes the same result as
Long.remainderUnsigned(long, long)
but assumes that the divisor is an integer in the range 1 to 231 - 1 inclusive, that is a strictly positive integer size.If the divisor is negative the behavior is not defined.
- Parameters:
dividend
- an unsigned long value to calculate the modulus of.divisor
- the divisor for the modulus calculation, must be strictly positive.- Returns:
- the remainder or modulus value.
- Throws:
ArithmeticException
- if the divisor is zero- See Also:
-
numberOfBitMaps
Calculates the number of bit maps (longs) required for the numberOfBits parameter.If the input is negative the behavior is not defined.
- Parameters:
numberOfBits
- the number of bits to store in the array of bit maps.- Returns:
- the number of bit maps necessary.
-
set
Sets the bit in the bit maps.Does not perform range checking
- Parameters:
bitMaps
- The array of bit maps.bitIndex
- the index of the bit to set.- Throws:
IndexOutOfBoundsException
- if bitIndex specifies a bit not in the range being tracked.
-