Class AbstractBitVector

    • Constructor Detail

      • AbstractBitVector

        public AbstractBitVector()
    • Method Detail

      • set

        public void set​(int index)
      • clear

        public void clear​(int index)
      • flip

        public void flip​(int index)
      • set

        public void set​(long index)
        Description copied from interface: BitVector
        Sets a bit in this bit vector (optional operation).
        Specified by:
        set in interface BitVector
        Parameters:
        index - the index of a bit.
      • clear

        public void clear​(long index)
        Description copied from interface: BitVector
        Clears a bit in this bit vector (optional operation).
        Specified by:
        clear in interface BitVector
        Parameters:
        index - the index of a bit.
      • flip

        public void flip​(long index)
        Description copied from interface: BitVector
        Flips a bit in this bit vector (optional operation).
        Specified by:
        flip in interface BitVector
        Parameters:
        index - the index of a bit.
      • fill

        public void fill​(boolean value)
        Description copied from interface: BitVector
        Sets all bits this bit vector to the given boolean value (optional operation).
        Specified by:
        fill in interface BitVector
        Parameters:
        value - the value (true or false).
      • fill

        public void fill​(int value)
        Description copied from interface: BitVector
        Sets all bits this bit vector to the given integer value (optional operation).
        Specified by:
        fill in interface BitVector
        Parameters:
        value - the value (zero or nonzero).
      • flip

        public void flip()
        Description copied from interface: BitVector
        Flips all bits in this bit vector (optional operation).
        Specified by:
        flip in interface BitVector
      • fill

        public void fill​(long from,
                         long to,
                         boolean value)
        Description copied from interface: BitVector
        Fills a range of bits in this bit vector (optional operation).
        Specified by:
        fill in interface BitVector
        Parameters:
        from - the first index (inclusive).
        to - the last index (not inclusive).
        value - the value (true or false).
      • fill

        public void fill​(long from,
                         long to,
                         int value)
        Description copied from interface: BitVector
        Clears a range of bits in this bit vector (optional operation).
        Specified by:
        fill in interface BitVector
        Parameters:
        from - the first index (inclusive).
        to - the last index (not inclusive).
        value - the value (zero or nonzero).
      • flip

        public void flip​(long from,
                         long to)
        Description copied from interface: BitVector
        Flips a range of bits in this bit vector (optional operation).
        Specified by:
        flip in interface BitVector
        Parameters:
        from - the first index (inclusive).
        to - the last index (not inclusive).
      • getInt

        public int getInt​(long index)
        Description copied from interface: BitVector
        Returns the value of the specified bit as an integer.

        This method is a useful synonym for BooleanBigList.getBoolean(long).

        Specified by:
        getInt in interface BitVector
        Parameters:
        index - the index of a bit.
        Returns:
        the value of the specified bit as an integer (0 or 1).
      • getLong

        public long getLong​(long from,
                            long to)
        Description copied from interface: BitVector
        Returns the specified bit range as a long.

        Note that bit 0 of the returned long will be bit from of this bit vector.

        Implementations are invited to provide high-speed implementations for the case in which from is a multiple of Long.SIZE and to is from + Long.SIZE (or less, in case the vector length is exceeded). This behaviour make it possible to implement high-speed hashing, copies, etc.

        Specified by:
        getLong in interface BitVector
        Parameters:
        from - the starting bit (inclusive).
        to - the ending bit (exclusive).
        Returns:
        the long value contained in the specified bits.
      • getBoolean

        public boolean getBoolean​(int index)
      • removeBoolean

        public boolean removeBoolean​(int index)
      • set

        public boolean set​(int index,
                           boolean value)
      • add

        public void add​(int index,
                        boolean value)
      • set

        public void set​(long index,
                        int value)
        Description copied from interface: BitVector
        Sets the value of the specified bit as an integer (optional operation).

        This method is a useful synonym for BooleanBigList.set(long, boolean).

        Specified by:
        set in interface BitVector
        Parameters:
        index - the index of a bit.
        value - the new value (any nonzero integer for setting the bit, zero for clearing the bit).
      • add

        public void add​(long index,
                        int value)
        Description copied from interface: BitVector
        Adds a bit with specified integer value at the specified index (optional operation).

        This method is a useful synonym for BooleanBigList.add(long, boolean).

        Specified by:
        add in interface BitVector
        Parameters:
        index - the index of a bit.
        value - the value that will be inserted at position index (any nonzero integer for a true bit, zero for a false bit).
      • add

        public void add​(int value)
        Description copied from interface: BitVector
        Adds a bit with specified value at the end of this bit vector.

        This method is a useful synonym for BooleanList.add(boolean).

        Specified by:
        add in interface BitVector
        Parameters:
        value - the new value (any nonzero integer for a true bit, zero for a false bit).
      • append

        public BitVector append​(long value,
                                int k)
        Description copied from interface: BitVector
        Appends the less significant bits of a long integer to this bit vector.
        Specified by:
        append in interface BitVector
        Parameters:
        value - a value to be appended
        k - the number of less significant bits to be added to this bit vector.
        Returns:
        this bit vector.
      • append

        public BitVector append​(BitVector bv)
        Description copied from interface: BitVector
        Appends another bit vector to this bit vector.
        Specified by:
        append in interface BitVector
        Parameters:
        bv - a bit vector to be appended.
        Returns:
        this bit vector.
      • copy

        public BitVector copy()
        Description copied from interface: BitVector
        Returns a copy of this bit vector.
        Specified by:
        copy in interface BitVector
        Returns:
        a copy of this bit vector.
      • copy

        public BitVector copy​(long from,
                              long to)
        Description copied from interface: BitVector
        Returns a copy of a part of this bit vector.
        Specified by:
        copy in interface BitVector
        Parameters:
        from - the starting bit, inclusive.
        to - the ending bit, not inclusive.
        Returns:
        a copy of the part of this bit vector going from bit from (inclusive) to bit to (not inclusive)
      • count

        public long count()
        Description copied from interface: BitVector
        Counts the number of bits set to true in this bit vector.
        Specified by:
        count in interface BitVector
        Returns:
        the number of bits set to true in this bit vector.
      • firstOne

        public long firstOne()
        Description copied from interface: BitVector
        Returns the position of the first bit set in this vector.
        Specified by:
        firstOne in interface BitVector
        Returns:
        the first bit set, or -1 for a vector of zeroes.
      • lastOne

        public long lastOne()
        Description copied from interface: BitVector
        Returns the position of the last bit set in this vector.
        Specified by:
        lastOne in interface BitVector
        Returns:
        the last bit set, or -1 for a vector of zeroes.
      • firstZero

        public long firstZero()
        Description copied from interface: BitVector
        Returns the position of the first bit unset in this vector.
        Specified by:
        firstZero in interface BitVector
        Returns:
        the first bit unset, or -1 for a vector of ones.
      • lastZero

        public long lastZero()
        Description copied from interface: BitVector
        Returns the position of the last bit unset in this vector.
        Specified by:
        lastZero in interface BitVector
        Returns:
        the last bit unset, or -1 for a vector of ones.
      • nextOne

        public long nextOne​(long index)
        Description copied from interface: BitVector
        Returns the position of the first bit set at of after the given position.
        Specified by:
        nextOne in interface BitVector
        Returns:
        the position of the first bit set at or after position index, or -1 if no such bit exists.
      • previousOne

        public long previousOne​(long index)
        Description copied from interface: BitVector
        Returns the position of the first bit set strictly before the given position.
        Specified by:
        previousOne in interface BitVector
        Returns:
        the position of the first bit set strictly before position index, or -1 if no such bit exists.
      • nextZero

        public long nextZero​(long index)
        Description copied from interface: BitVector
        Returns the position of the first bit unset after the given position.
        Specified by:
        nextZero in interface BitVector
        Returns:
        the first bit unset after position index (inclusive), or -1 if no such bit exists.
      • previousZero

        public long previousZero​(long index)
        Description copied from interface: BitVector
        Returns the position of the first bit unset before or at the given position.
        Specified by:
        previousZero in interface BitVector
        Returns:
        the first bit unset before or at the given position, or -1 if no such bit exists.
      • longestCommonPrefixLength

        public long longestCommonPrefixLength​(BitVector v)
        Description copied from interface: BitVector
        Returns the length of the greatest common prefix between this and the specified vector.
        Specified by:
        longestCommonPrefixLength in interface BitVector
        Parameters:
        v - a bit vector.
        Returns:
        the length of the greatest common prefix.
      • isPrefix

        public boolean isPrefix​(BitVector v)
        Description copied from interface: BitVector
        Returns true if this vector is a prefix of the specified vector.
        Specified by:
        isPrefix in interface BitVector
        Parameters:
        v - a bit vector.
        Returns:
        true if this vector is a prefix of v.
      • isProperPrefix

        public boolean isProperPrefix​(BitVector v)
        Description copied from interface: BitVector
        Returns true if this vector is a proper prefix of the specified vector.
        Specified by:
        isProperPrefix in interface BitVector
        Parameters:
        v - a bit vector.
        Returns:
        true if this vector is a proper prefix of v (i.e., it is a prefix but not equal).
      • and

        public BitVector and​(BitVector v)
        Description copied from interface: BitVector
        Performs a logical and between this bit vector and another one, leaving the result in this vector.
        Specified by:
        and in interface BitVector
        Parameters:
        v - a bit vector.
        Returns:
        this bit vector.
      • or

        public BitVector or​(BitVector v)
        Description copied from interface: BitVector
        Performs a logical or between this bit vector and another one, leaving the result in this vector.
        Specified by:
        or in interface BitVector
        Parameters:
        v - a bit vector.
        Returns:
        this bit vector.
      • xor

        public BitVector xor​(BitVector v)
        Description copied from interface: BitVector
        Performs a logical xor between this bit vector and another one, leaving the result in this vector.
        Specified by:
        xor in interface BitVector
        Parameters:
        v - a bit vector.
        Returns:
        this bit vector.
      • replace

        public BitVector replace​(BitVector bv)
        Description copied from interface: BitVector
        Replaces the content of this bit vector with another bit vector.
        Specified by:
        replace in interface BitVector
        Parameters:
        bv - a bit vector.
        Returns:
        this bit vector.
      • equals

        public boolean equals​(BitVector v,
                              long start,
                              long end)
        Description copied from interface: BitVector
        Checks for equality with a segment of another vector.
        Specified by:
        equals in interface BitVector
        Parameters:
        v - a bit vector.
        start - the starting bit, inclusive.
        end - the ending bit, not inclusive.
        Returns:
        true if this vector and v are equal in the range of positions [from..to).
      • hashCode

        public int hashCode()
        Description copied from interface: BitVector
        Returns a hash code for this bit vector.

        Hash codes for bit vectors are defined as follows:

         final long length = length();
         long fullLength = length - length % Long.SIZE;
         long h = 0x9e3779b97f4a7c13L ^ length;
         for(long i = 0; i < fullLength; i += Long.SIZE) h ^= (h << 5) + getLong(i, i + Long.SIZE) + (h >>> 2);
         if (length != fullLength) h ^= (h << 5) + getLong(fullLength, length) + (h >>> 2);
         (int)((h >>> 32) ^ h);
         

        The last value is the hash code of the bit vector. This hashing is based on shift-add-xor hashing (M.V. Ramakrishna and Justin Zobel, “Performance in practice of string hashing functions”, Proc. of the Fifth International Conference on Database Systems for Advanced Applications, 1997, pages 215−223).

        The returned value is not a high-quality hash such as Jenkins's, but it can be computed very quickly; in any case, 32 bits are too few for a high-quality hash to be used in large-scale applications.

        Important: all bit vector implementations are required to return the value defined here. The simplest way to obtain this result is to subclass AbstractBitVector.

        Specified by:
        hashCode in interface BitVector
        Specified by:
        hashCode in interface Collection<Boolean>
        Overrides:
        hashCode in class AbstractBooleanBigList
        Returns:
        a hash code for this bit vector.
      • bits

        public long[] bits()
        Description copied from interface: BitVector
        Returns the bits in this bit vector as an array of longs, not to be modified.
        Specified by:
        bits in interface BitVector
        Returns:
        an array of longs whose first BitVector.length() bits contain the bits of this bit vector. The array cannot be modified.
      • length

        public BitVector length​(long newLength)
        Description copied from interface: BitVector
        Sets the number of bits in this bit vector.

        It is expected that this method will try to allocate exactly the necessary space.

        If the argument fits an integer, this method has the same side effects of BooleanList.size(int). In any case, this method has the same side effects of BigList.size(long), but it is preferred, as it has the advantage of returning this bit vector, thus making it possible to chain methods.

        Specified by:
        length in interface BitVector
        Returns:
        this bit vector.
      • asLongSet

        public LongSortedSet asLongSet()
        Description copied from interface: BitVector
        Returns a view of this bit vector as a sorted set of long integers.

        More formally, this bit vector is infinitely extended to the left with zeros (e.g., all bits beyond BitVector.length(long) are considered zeroes). The resulting infinite string is interpreted as the characteristic function of a set of integers.

        Note that, in particular, the resulting string representation is exactly that of a BitSet.

        Specified by:
        asLongSet in interface BitVector
      • asLongBigList

        public LongBigList asLongBigList​(int width)
        Description copied from interface: BitVector
        Returns a view of this bit vector as a list of nonnegative integers of specified width.

        More formally, getLong(p) will return the nonnegative integer defined by the bits starting at p * width (bit 0, inclusive) and ending at (p + 1) * width (bit width − 1, exclusive).

        Specified by:
        asLongBigList in interface BitVector
      • subVector

        public BitVector subVector​(long from,
                                   long to)
        Description copied from interface: BitVector
        Returns a subvector view specified by initial and final index.

        The object returned by this method is a bit vector representing a view of this bit vector restricted to the given indices. Changes to the subvector will be reflected in the main vector.

        Specified by:
        subVector in interface BitVector
        Parameters:
        from - the first index (inclusive).
        to - the last index (not inclusive).
      • compareTo

        public int compareTo​(BitVector v)
      • toString

        public String toString()
        Returns a string representation of this vector.

        Note that this string representation shows the bit of index 0 at the leftmost position.

        Overrides:
        toString in class AbstractBooleanBigList
        Returns:
        a string representation of this vector, with the bit of index 0 on the left.