Class FixedIndexed<T>

  • All Implemented Interfaces:
    Iterable<T>, HotLoopCallee, Indexed<T>

    public class FixedIndexed<T>
    extends Object
    implements Indexed<T>
    Fixed width value implementation of Indexed, stored simply as a header that contains the number of values, and then the values stored sequentially. | version (byte) | flags (byte) | size (number of elements) (int) | [value1 (width)] [value2 (width)] ... | The current version is always 0. The flags contain information about whether the values are sorted (and so supports indexOf(Object)) and if so, if there is a null value present. The nulls bit is 0x01, and the sorted bit is 0x02, which set hasNull and isSorted respectively. If hasNull is set, id 0 is ALWAYS null, so the comparator should be 'nulls first' or else behavior will be unexpected. hasNull can only be set if also isSorted is set, since the null value is not actually stored in the values section. This class is thread-safe if and only if TypeStrategy.read(ByteBuffer, int) is thread-safe.
    • Method Detail

      • size

        public int size()
        Description copied from interface: Indexed
        Number of elements in the value set
        Specified by:
        size in interface Indexed<T>
      • get

        @Nullable
        public T get​(int index)
        Description copied from interface: Indexed
        Get the value at specified position
        Specified by:
        get in interface Indexed<T>
      • indexOf

        public int indexOf​(@Nullable
                           T value)
        Description copied from interface: Indexed
        Returns the index of "value" in this Indexed object, or a negative number if the value is not present. The negative number is not guaranteed to be any particular number unless Indexed.isSorted() returns true, in which case it will be a negative number equal to (-(insertion point) - 1), in the manner of Arrays.binarySearch.
        Specified by:
        indexOf in interface Indexed<T>
        Parameters:
        value - value to search for
        Returns:
        index of value, or a negative number (equal to (-(insertion point) - 1) if Indexed.isSorted())
      • isSorted

        public boolean isSorted()
        Description copied from interface: Indexed
        Indicates if this value set is sorted, the implication being that the contract of Indexed.indexOf(T) is strenthened to return a negative number equal to (-(insertion point) - 1) when the value is not present in the set.
        Specified by:
        isSorted in interface Indexed<T>
      • getRange

        public it.unimi.dsi.fastutil.ints.IntIntPair getRange​(@Nullable
                                                              T startValue,
                                                              boolean startStrict,
                                                              @Nullable
                                                              T endValue,
                                                              boolean endStrict)
      • inspectRuntimeShape

        public void inspectRuntimeShape​(RuntimeShapeInspector inspector)
        Description copied from interface: HotLoopCallee
        Implementations of this method should call inspector.visit() with all fields of this class, which meet two conditions: 1. They are used in methods of this class, annotated with CalledFromHotLoop 2. They are either: a. Nullable objects b. Instances of HotLoopCallee c. Objects, which don't always have a specific class in runtime. For example, a field of type Set could be HashSet or TreeSet in runtime, depending on how this instance (the instance on which inspectRuntimeShape() is called) is configured. d. ByteBuffer or similar objects, where byte order matters e. boolean flags, affecting branch taking f. Arrays of objects, meeting any of conditions a-e.
        Specified by:
        inspectRuntimeShape in interface HotLoopCallee