Package org.apache.druid.segment.serde
Class CombineFirstTwoEntriesIndexed<T>
- java.lang.Object
-
- org.apache.druid.segment.serde.CombineFirstTwoEntriesIndexed<T>
-
- All Implemented Interfaces:
Iterable<T>,HotLoopCallee,Indexed<T>
public abstract class CombineFirstTwoEntriesIndexed<T> extends Object implements Indexed<T>
AnIndexedthat delegates to an underyling instance, but combines the first two entries. UnlikeCombineFirstTwoValuesIndexedInts, this class combines the first two *entries*. So [0, 1, 2] becomes [(something), 2]. The first two entries, 0 and 1, were replaced with (something). That something is given bynewFirstValue(). Provided to enable compatibility for segments written underNullHandling.sqlCompatible()mode but read underNullHandling.replaceWithDefault()mode. Important note:isSorted()returns the same value as the underlying delegate. In this case, this class assumes thatnewFirstValue()is the lowest possible value in the universe: including anything indelegateand anything that might be passed toindexOf(Object). Callers must ensure that this precondition is met.
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedCombineFirstTwoEntriesIndexed(Indexed<T> delegate)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description Tget(int index)Get the value at specified positionintindexOf(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()protected abstract TnewFirstValue()static <T> CombineFirstTwoEntriesIndexed<T>returnNull(Indexed<T> delegate)Combine the first two values into a literal null.intsize()Number of elements in the value setstatic CombineFirstTwoEntriesIndexed<ImmutableBitmap>unionBitmaps(BitmapFactory bitmapFactory, Indexed<ImmutableBitmap> delegate)Union the first two bitmaps.-
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
-
-
-
-
Method Detail
-
returnNull
public static <T> CombineFirstTwoEntriesIndexed<T> returnNull(Indexed<T> delegate)
Combine the first two values into a literal null.
-
unionBitmaps
public static CombineFirstTwoEntriesIndexed<ImmutableBitmap> unionBitmaps(BitmapFactory bitmapFactory, Indexed<ImmutableBitmap> delegate)
Union the first two bitmaps.
-
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())
-
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
-
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.
-
-