Package org.apache.druid.segment.data
Class FixedIndexed<T>
- java.lang.Object
-
- org.apache.druid.segment.data.FixedIndexed<T>
-
- All Implemented Interfaces:
Iterable<T>,HotLoopCallee,Indexed<T>
public class FixedIndexed<T> extends Object implements Indexed<T>
Fixed width value implementation ofIndexed, 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 supportsindexOf(Object)) and if so, if there is a null value present. The nulls bit is 0x01, and the sorted bit is 0x02, which sethasNullandisSortedrespectively. IfhasNullis set, id 0 is ALWAYS null, so the comparator should be 'nulls first' or else behavior will be unexpected.hasNullcan only be set if alsoisSortedis set, since the null value is not actually stored in the values section. This class is thread-safe if and only ifTypeStrategy.read(ByteBuffer, int)is thread-safe.
-
-
Field Summary
Fields Modifier and Type Field Description static byteIS_SORTED_MASK
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Tget(int index)Get the value at specified positionit.unimi.dsi.fastutil.ints.IntIntPairgetRange(T startValue, boolean startStrict, T endValue, boolean endStrict)intindexOf(T value)Returns the index of "value" in this Indexed object, or a negative number if the value is not present.voidinspectRuntimeShape(RuntimeShapeInspector inspector)Implementations of this method should callinspector.visit()with all fields of this class, which meet two conditions: 1.booleanisSorted()Indicates if this value set is sorted, the implication being that the contract ofIndexed.indexOf(T)is strenthened to return a negative number equal to (-(insertion point) - 1) when the value is not present in the set.Iterator<T>iterator()static <T> com.google.common.base.Supplier<FixedIndexed<T>>read(ByteBuffer bb, TypeStrategy<T> strategy, ByteOrder byteOrder, int width)intsize()Number of elements in the value set-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Field Detail
-
IS_SORTED_MASK
public static final byte IS_SORTED_MASK
- See Also:
- Constant Field Values
-
-
Method Detail
-
read
public static <T> com.google.common.base.Supplier<FixedIndexed<T>> read(ByteBuffer bb, TypeStrategy<T> strategy, ByteOrder byteOrder, int width)
-
size
public int size()
Description copied from interface:IndexedNumber of elements in the value set
-
get
@Nullable public T get(int index)
Description copied from interface:IndexedGet the value at specified position
-
indexOf
public int indexOf(@Nullable T value)
Description copied from interface:IndexedReturns 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 unlessIndexed.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:
indexOfin interfaceIndexed<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:IndexedIndicates if this value set is sorted, the implication being that the contract ofIndexed.indexOf(T)is strenthened to return a negative number equal to (-(insertion point) - 1) when the value is not present in the set.
-
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:HotLoopCalleeImplementations of this method should callinspector.visit()with all fields of this class, which meet two conditions: 1. They are used in methods of this class, annotated withCalledFromHotLoop2. 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 typeSetcould beHashSetorTreeSetin 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:
inspectRuntimeShapein interfaceHotLoopCallee
-
-