Class RunContainer

    • Constructor Detail

      • RunContainer

        public RunContainer()
        Create a container with default capacity
      • RunContainer

        protected RunContainer​(ArrayContainer arr,
                               int nbrRuns)
      • RunContainer

        public RunContainer​(int firstOfRun,
                            int lastOfRun)
        Create an run container with a run of ones from firstOfRun to lastOfRun.
        Parameters:
        firstOfRun - first index
        lastOfRun - last index (range is exclusive)
      • RunContainer

        protected RunContainer​(BitmapContainer bc,
                               int nbrRuns)
      • RunContainer

        public RunContainer​(int capacity)
        Create an array container with specified capacity
        Parameters:
        capacity - The capacity of the container
      • RunContainer

        public RunContainer​(MappeableRunContainer bc)
        Creates a new non-mappeable container from a mappeable one. This copies the data.
        Parameters:
        bc - the original container
      • RunContainer

        public RunContainer​(short[] array,
                            int numRuns)
        Construct a new RunContainer backed by the provided array. Note that if you modify the RunContainer a new array may be produced.
        Parameters:
        array - array where the data is stored
        numRuns - number of runs (each using 2 shorts in the buffer)
    • Method Detail

      • serializedSizeInBytes

        protected static int serializedSizeInBytes​(int numberOfRuns)
      • add

        public Container add​(int begin,
                             int end)
        Description copied from class: Container
        Return a new container with all shorts in [begin,end) added using an unsigned interpretation.
        Specified by:
        add in class Container
        Parameters:
        begin - start of range (inclusive)
        end - end of range (exclusive)
        Returns:
        the new container
      • add

        public Container add​(short k)
        Description copied from class: Container
        Add a short to the container. May generate a new container.
        Specified by:
        add in interface WordStorage<Container>
        Specified by:
        add in class Container
        Parameters:
        k - short to be added
        Returns:
        the new container
      • and

        public Container and​(ArrayContainer x)
        Description copied from class: Container
        Computes the bitwise AND of this container with another (intersection). This container as well as the provided container are left unaffected.
        Specified by:
        and in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • and

        public Container and​(BitmapContainer x)
        Description copied from class: Container
        Computes the bitwise AND of this container with another (intersection). This container as well as the provided container are left unaffected.
        Specified by:
        and in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • and

        public Container and​(RunContainer x)
        Description copied from class: Container
        Computes the bitwise AND of this container with another (intersection). This container as well as the provided container are left unaffected.
        Specified by:
        and in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • andNot

        public Container andNot​(ArrayContainer x)
        Description copied from class: Container
        Computes the bitwise ANDNOT of this container with another (difference). This container as well as the provided container are left unaffected.
        Specified by:
        andNot in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • andNot

        public Container andNot​(BitmapContainer x)
        Description copied from class: Container
        Computes the bitwise ANDNOT of this container with another (difference). This container as well as the provided container are left unaffected.
        Specified by:
        andNot in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • andNot

        public Container andNot​(RunContainer x)
        Description copied from class: Container
        Computes the bitwise ANDNOT of this container with another (difference). This container as well as the provided container are left unaffected.
        Specified by:
        andNot in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • clear

        public void clear()
        Description copied from class: Container
        Empties the container
        Specified by:
        clear in class Container
      • isEmpty

        public boolean isEmpty()
        Description copied from class: Container
        Checks whether the container is empty or not.
        Specified by:
        isEmpty in interface WordStorage<Container>
        Specified by:
        isEmpty in class Container
        Returns:
        true if the container is empty.
      • contains

        public boolean contains​(short x)
        Description copied from class: Container
        Checks whether the contain contains the provided value
        Specified by:
        contains in class Container
        Parameters:
        x - value to check
        Returns:
        whether the value is in the container
      • contains

        public boolean contains​(int minimum,
                                int supremum)
        Description copied from class: Container
        Checks whether the container contains the entire range
        Specified by:
        contains in class Container
        Parameters:
        minimum - the inclusive lower bound of the range
        supremum - the exclusive upper bound of the range
        Returns:
        true if the container contains the range
      • deserialize

        public void deserialize​(DataInput in)
                         throws IOException
        Description copied from class: Container
        Deserialize (recover) the container.
        Specified by:
        deserialize in class Container
        Parameters:
        in - the DataInput stream
        Throws:
        IOException - Signals that an I/O exception has occurred.
      • ensureCapacity

        protected void ensureCapacity​(int minNbRuns)
      • fillLeastSignificant16bits

        public void fillLeastSignificant16bits​(int[] x,
                                               int i,
                                               int mask)
        Description copied from class: Container
        Fill the least significant 16 bits of the integer array, starting at index i, with the short values from this container. The caller is responsible to allocate enough room. The most significant 16 bits of each integer are given by the most significant bits of the provided mask.
        Specified by:
        fillLeastSignificant16bits in class Container
        Parameters:
        x - provided array
        i - starting index
        mask - indicates most significant bits
      • flip

        public Container flip​(short x)
        Description copied from class: Container
        Add a short to the container if it is not present, otherwise remove it. May generate a new container.
        Specified by:
        flip in class Container
        Parameters:
        x - short to be added
        Returns:
        the new container
      • getArraySizeInBytes

        protected int getArraySizeInBytes()
        Description copied from class: Container
        Size of the underlying array
        Specified by:
        getArraySizeInBytes in class Container
        Returns:
        size in bytes
      • getCardinality

        public int getCardinality()
        Description copied from class: Container
        Computes the distinct number of short values in the container. Can be expected to run in constant time.
        Specified by:
        getCardinality in class Container
        Returns:
        the cardinality
      • getLength

        public short getLength​(int index)
        Gets the length of the run at the index.
        Parameters:
        index - the index of the run.
        Returns:
        the length of the run at the index.
        Throws:
        ArrayIndexOutOfBoundsException - if index is negative or larger than the index of the last run.
      • getSizeInBytes

        public int getSizeInBytes()
        Description copied from class: Container
        Computes an estimate of the memory usage of this container. The estimate is not meant to be exact.
        Specified by:
        getSizeInBytes in class Container
        Returns:
        estimated memory usage in bytes
      • getValue

        public short getValue​(int index)
        Gets the value of the first element of the run at the index.
        Parameters:
        index - the index of the run.
        Returns:
        the value of the first element of the run at the index.
        Throws:
        ArrayIndexOutOfBoundsException - if index is negative or larger than the index of the last run.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • iadd

        public Container iadd​(int begin,
                              int end)
        Description copied from class: Container
        Add all shorts in [begin,end) using an unsigned interpretation. May generate a new container.
        Specified by:
        iadd in class Container
        Parameters:
        begin - start of range (inclusive)
        end - end of range (exclusive)
        Returns:
        the new container
      • iand

        public Container iand​(ArrayContainer x)
        Description copied from class: Container
        Computes the in-place bitwise AND of this container with another (intersection). The current container is generally modified, whereas the provided container (x) is unaffected. May generate a new container.
        Specified by:
        iand in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • iand

        public Container iand​(BitmapContainer x)
        Description copied from class: Container
        Computes the in-place bitwise AND of this container with another (intersection). The current container is generally modified, whereas the provided container (x) is unaffected. May generate a new container.
        Specified by:
        iand in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • iand

        public Container iand​(RunContainer x)
        Description copied from class: Container
        Computes the in-place bitwise AND of this container with another (intersection). The current container is generally modified, whereas the provided container (x) is unaffected. May generate a new container.
        Specified by:
        iand in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • iandNot

        public Container iandNot​(ArrayContainer x)
        Description copied from class: Container
        Computes the in-place bitwise ANDNOT of this container with another (difference). The current container is generally modified, whereas the provided container (x) is unaffected. May generate a new container.
        Specified by:
        iandNot in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • iandNot

        public Container iandNot​(BitmapContainer x)
        Description copied from class: Container
        Computes the in-place bitwise ANDNOT of this container with another (difference). The current container is generally modified, whereas the provided container (x) is unaffected. May generate a new container.
        Specified by:
        iandNot in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • iandNot

        public Container iandNot​(RunContainer x)
        Description copied from class: Container
        Computes the in-place bitwise ANDNOT of this container with another (difference). The current container is generally modified, whereas the provided container (x) is unaffected. May generate a new container.
        Specified by:
        iandNot in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • inot

        public Container inot​(int rangeStart,
                              int rangeEnd)
        Description copied from class: Container
        Computes the in-place bitwise NOT of this container (complement). Only those bits within the range are affected. The current container is generally modified. May generate a new container.
        Specified by:
        inot in class Container
        Parameters:
        rangeStart - beginning of range (inclusive); 0 is beginning of this container.
        rangeEnd - ending of range (exclusive)
        Returns:
        (partially) complemented container
      • intersects

        public boolean intersects​(ArrayContainer x)
        Description copied from class: Container
        Returns true if the current container intersects the other container.
        Specified by:
        intersects in class Container
        Parameters:
        x - other container
        Returns:
        whether they intersect
      • intersects

        public boolean intersects​(BitmapContainer x)
        Description copied from class: Container
        Returns true if the current container intersects the other container.
        Specified by:
        intersects in class Container
        Parameters:
        x - other container
        Returns:
        whether they intersect
      • intersects

        public boolean intersects​(RunContainer x)
        Description copied from class: Container
        Returns true if the current container intersects the other container.
        Specified by:
        intersects in class Container
        Parameters:
        x - other container
        Returns:
        whether they intersect
      • intersects

        public boolean intersects​(int minimum,
                                  int supremum)
        Description copied from class: Container
        Checks if the container intersects with a range
        Specified by:
        intersects in class Container
        Parameters:
        minimum - the inclusive unsigned lower bound of the range
        supremum - the exclusive unsigned upper bound of the range
        Returns:
        true if the container intersects the range
      • ior

        public Container ior​(ArrayContainer x)
        Description copied from class: Container
        Computes the in-place bitwise OR of this container with another (union). The current container is generally modified, whereas the provided container (x) is unaffected. May generate a new container.
        Specified by:
        ior in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • ior

        public Container ior​(BitmapContainer x)
        Description copied from class: Container
        Computes the in-place bitwise OR of this container with another (union). The current container is generally modified, whereas the provided container (x) is unaffected. May generate a new container.
        Specified by:
        ior in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • ior

        public Container ior​(RunContainer x)
        Description copied from class: Container
        Computes the in-place bitwise OR of this container with another (union). The current container is generally modified, whereas the provided container (x) is unaffected. May generate a new container.
        Specified by:
        ior in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • iremove

        public Container iremove​(int begin,
                                 int end)
        Description copied from class: Container
        Remove shorts in [begin,end) using an unsigned interpretation. May generate a new container.
        Specified by:
        iremove in class Container
        Parameters:
        begin - start of range (inclusive)
        end - end of range (exclusive)
        Returns:
        the new container
      • isFull

        protected boolean isFull()
      • ixor

        public Container ixor​(ArrayContainer x)
        Description copied from class: Container
        Computes the in-place bitwise XOR of this container with another (symmetric difference). The current container is generally modified, whereas the provided container (x) is unaffected. May generate a new container.
        Specified by:
        ixor in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • ixor

        public Container ixor​(BitmapContainer x)
        Description copied from class: Container
        Computes the in-place bitwise XOR of this container with another (symmetric difference). The current container is generally modified, whereas the provided container (x) is unaffected. May generate a new container.
        Specified by:
        ixor in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • ixor

        public Container ixor​(RunContainer x)
        Description copied from class: Container
        Computes the in-place bitwise XOR of this container with another (symmetric difference). The current container is generally modified, whereas the provided container (x) is unaffected. May generate a new container.
        Specified by:
        ixor in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • limit

        public Container limit​(int maxcardinality)
        Description copied from class: Container
        Create a new Container containing at most maxcardinality integers.
        Specified by:
        limit in class Container
        Parameters:
        maxcardinality - maximal cardinality
        Returns:
        a new bitmap with cardinality no more than maxcardinality
      • not

        public Container not​(int rangeStart,
                             int rangeEnd)
        Description copied from class: Container
        Computes the bitwise NOT of this container (complement). Only those bits within the range are affected. The current container is left unaffected.
        Specified by:
        not in class Container
        Parameters:
        rangeStart - beginning of range (inclusive); 0 is beginning of this container.
        rangeEnd - ending of range (exclusive)
        Returns:
        (partially) complemented container
      • numberOfRuns

        public int numberOfRuns()
      • or

        public Container or​(ArrayContainer x)
        Description copied from class: Container
        Computes the bitwise OR of this container with another (union). This container as well as the provided container are left unaffected.
        Specified by:
        or in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • or

        public Container or​(BitmapContainer x)
        Description copied from class: Container
        Computes the bitwise OR of this container with another (union). This container as well as the provided container are left unaffected.
        Specified by:
        or in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • or

        public Container or​(RunContainer x)
        Description copied from class: Container
        Computes the bitwise OR of this container with another (union). This container as well as the provided container are left unaffected.
        Specified by:
        or in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • rank

        public int rank​(short lowbits)
        Description copied from class: Container
        Rank returns the number of integers that are smaller or equal to x (Rank(infinity) would be GetCardinality()).
        Specified by:
        rank in class Container
        Parameters:
        lowbits - upper limit
        Returns:
        the rank
      • remove

        public Container remove​(int begin,
                                int end)
        Description copied from class: Container
        Return a new container with all shorts in [begin,end) remove using an unsigned interpretation.
        Specified by:
        remove in class Container
        Parameters:
        begin - start of range (inclusive)
        end - end of range (exclusive)
        Returns:
        the new container
      • remove

        public Container remove​(short x)
        Description copied from class: Container
        Remove the short from this container. May create a new container.
        Specified by:
        remove in class Container
        Parameters:
        x - to be removed
        Returns:
        New container
      • repairAfterLazy

        public Container repairAfterLazy()
        Description copied from class: Container
        The output of a lazyOR or lazyIOR might be an invalid container, this should be called on it.
        Specified by:
        repairAfterLazy in class Container
        Returns:
        a new valid container
      • runOptimize

        public Container runOptimize()
        Convert to Array or Bitmap container if the serialized form would be shorter. Exactly the same functionality as toEfficientContainer.
        Specified by:
        runOptimize in interface WordStorage<Container>
        Specified by:
        runOptimize in class Container
        Returns:
        the new container
      • select

        public short select​(int j)
        Description copied from class: Container
        Return the jth value
        Specified by:
        select in class Container
        Parameters:
        j - index of the value
        Returns:
        the value
      • serializedSizeInBytes

        public int serializedSizeInBytes()
        Description copied from class: Container
        Report the number of bytes required to serialize this container.
        Specified by:
        serializedSizeInBytes in class Container
        Returns:
        the size in bytes
      • toShortBuffer

        public ShortBuffer toShortBuffer()
        Return the content of this container as a ShortBuffer. This creates a copy and might be relatively slow.
        Returns:
        the ShortBuffer
      • trim

        public void trim()
        Description copied from class: Container
        If possible, recover wasted memory.
        Specified by:
        trim in class Container
      • writeArray

        protected void writeArray​(ByteBuffer buffer)
        Description copied from class: Container
        Write just the underlying array.
        Specified by:
        writeArray in class Container
        Parameters:
        buffer - ByteBuffer to write to
      • xor

        public Container xor​(ArrayContainer x)
        Description copied from class: Container
        Computes the bitwise XOR of this container with another (symmetric difference). This container as well as the provided container are left unaffected.
        Specified by:
        xor in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • xor

        public Container xor​(BitmapContainer x)
        Description copied from class: Container
        Computes the bitwise XOR of this container with another (symmetric difference). This container as well as the provided container are left unaffected.
        Specified by:
        xor in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • xor

        public Container xor​(RunContainer x)
        Description copied from class: Container
        Computes the bitwise XOR of this container with another (symmetric difference). This container as well as the provided container are left unaffected.
        Specified by:
        xor in class Container
        Parameters:
        x - other container
        Returns:
        aggregated container
      • forEach

        public void forEach​(short msb,
                            IntConsumer ic)
        Description copied from class: Container
        Iterate through the values of this container and pass them along to the IntConsumer, using msb as the 16 most significant bits.
        Specified by:
        forEach in class Container
        Parameters:
        msb - 16 most significant bits
        ic - consumer
      • toBitmapContainer

        public BitmapContainer toBitmapContainer()
        Description copied from class: Container
        Convert the current container to a BitmapContainer, if a conversion is needed. If the container is already a bitmap, the container is returned unchanged.
        Specified by:
        toBitmapContainer in class Container
        Returns:
        a bitmap container
      • nextValue

        public int nextValue​(short fromValue)
        Description copied from class: Container
        Gets the first value greater than or equal to the lower bound, or -1 if no such value exists.
        Specified by:
        nextValue in class Container
        Parameters:
        fromValue - the lower bound (inclusive)
        Returns:
        the next value
      • previousValue

        public int previousValue​(short fromValue)
        Description copied from class: Container
        Gets the last value less than or equal to the upper bound, or -1 if no such value exists.
        Specified by:
        previousValue in class Container
        Parameters:
        fromValue - the upper bound (inclusive)
        Returns:
        the previous value
      • nextAbsentValue

        public int nextAbsentValue​(short fromValue)
        Description copied from class: Container
        Gets the first absent value greater than or equal to the lower bound.
        Specified by:
        nextAbsentValue in class Container
        Parameters:
        fromValue - the lower bound (inclusive)
        Returns:
        the next absent value
      • previousAbsentValue

        public int previousAbsentValue​(short fromValue)
        Description copied from class: Container
        Gets the last value less than or equal to the upper bound.
        Specified by:
        previousAbsentValue in class Container
        Parameters:
        fromValue - the upper bound (inclusive)
        Returns:
        the previous absent value
      • first

        public int first()
        Description copied from class: Container
        Get the first integer held in the container
        Specified by:
        first in class Container
        Returns:
        the first integer in the container
      • last

        public int last()
        Description copied from class: Container
        Get the last integer held in the container
        Specified by:
        last in class Container
        Returns:
        the last integer in the container