Class Containers


  • public class Containers
    extends java.lang.Object
    To support the largest 2^48 different keys,we almost need 2^18 Container arrays which holds 2^31 - 8 Container
    • Field Detail

      • containerArrays

        private java.util.List<Container[]> containerArrays
      • containerSize

        private long containerSize
      • firstLevelIdx

        private int firstLevelIdx
      • secondLevelIdx

        private int secondLevelIdx
    • Constructor Detail

      • Containers

        public Containers()
        Constructor
    • Method Detail

      • reset

        private void reset()
      • remove

        public void remove​(long containerIdx)
        remove the container index Container
        Parameters:
        containerIdx - the container index
      • getContainer

        public Container getContainer​(long idx)
        get the Container with the corresponding container index
        Parameters:
        idx - the container index
        Returns:
        the corresponding Container
      • addContainer

        public long addContainer​(Container container)
        add a Container
        Parameters:
        container - a Container
        Returns:
        the container index
      • iterator

        public ContainerIterator iterator()
        a iterator of the Containers
        Returns:
        a iterator
      • replace

        public void replace​(long containerIdx,
                            Container freshContainer)
        replace the container index one with a fresh Container
        Parameters:
        containerIdx - the container index to replace
        freshContainer - the fresh one
      • replace

        public void replace​(int firstLevelIdx,
                            int secondLevelIdx,
                            Container freshContainer)
        replace with a fresh Container
        Parameters:
        firstLevelIdx - the first level array index
        secondLevelIdx - the second level array index
        freshContainer - a fresh container
      • getContainerSize

        public long getContainerSize()
        the number of all the holding containers
        Returns:
        the container number
      • getContainerArrays

        java.util.List<Container[]> getContainerArrays()
      • toContainerIdx

        static long toContainerIdx​(int firstLevelIdx,
                                   int secondLevelIdx)
      • grow

        private void grow​(int minCapacity,
                          int firstLevelIdx)
        increases the capacity to ensure that it can hold at least the number of elements specified by the minimum capacity argument.
        Parameters:
        minCapacity - the desired minimum capacity
      • hugeCapacity

        private static int hugeCapacity​(int minCapacity)
      • serializedSizeInBytes

        public long serializedSizeInBytes()
        Report the number of bytes required for serialization.
        Returns:
        The size in bytes
      • serialize

        public void serialize​(java.io.DataOutput dataOutput)
                       throws java.io.IOException
        Serialize the Containers
        Parameters:
        dataOutput - The destination DataOutput
        Throws:
        java.io.IOException - Signals that an I/O exception has occurred.
      • serialize

        public void serialize​(java.nio.ByteBuffer byteBuffer)
                       throws java.io.IOException
        Serialize the Containers
        Parameters:
        byteBuffer - The destination ByteBuffer
        Throws:
        java.io.IOException - Signals that an I/O exception has occurred.
      • deserialize

        public void deserialize​(java.io.DataInput dataInput)
                         throws java.io.IOException
        Deserialize the byte stream to init this Containers
        Parameters:
        dataInput - The DataInput
        Throws:
        java.io.IOException - Signals that an I/O exception has occurred.
      • deserialize

        public void deserialize​(java.nio.ByteBuffer byteBuffer)
                         throws java.io.IOException
        Deserialize the byte stream to init this Containers
        Parameters:
        byteBuffer - The DataInput
        Throws:
        java.io.IOException - Signals that an I/O exception has occurred.
      • containerType

        private byte containerType​(Container container)
      • instanceContainer

        private Container instanceContainer​(byte containerType,
                                            int cardinality,
                                            java.io.DataInput dataInput)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • instanceContainer

        private Container instanceContainer​(byte containerType,
                                            int cardinality,
                                            java.nio.ByteBuffer byteBuffer)
                                     throws java.io.IOException
        Throws:
        java.io.IOException