public class FixedIndexed<T> extends Object implements Indexed<T>
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.| Modifier and Type | Field and Description |
|---|---|
static byte |
IS_SORTED_MASK |
| Modifier and Type | Method and Description |
|---|---|
T |
get(int index)
Get the value at specified position
|
int |
indexOf(T value)
Returns the index of "value" in this Indexed object, or a negative number if the value is not present.
|
void |
inspectRuntimeShape(RuntimeShapeInspector inspector)
Implementations of this method should call
inspector.visit() with all fields of this class, which meet two
conditions:
1. |
boolean |
isSorted()
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. |
Iterator<T> |
iterator() |
static <T> com.google.common.base.Supplier<FixedIndexed<T>> |
read(ByteBuffer bb,
TypeStrategy<T> strategy,
ByteOrder byteOrder,
int width) |
int |
size()
Number of elements in the value set
|
String |
toString() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitcheckIndexforEach, spliteratorpublic static final byte IS_SORTED_MASK
public static <T> com.google.common.base.Supplier<FixedIndexed<T>> read(ByteBuffer bb, TypeStrategy<T> strategy, ByteOrder byteOrder, int width)
public int size()
Indexed@Nullable public T get(int index)
Indexedpublic int indexOf(@Nullable T value)
IndexedIndexed.isSorted() returns true, in
which case it will be a negative number equal to (-(insertion point) - 1), in the manner of Arrays.binarySearch.indexOf in interface Indexed<T>value - value to search forIndexed.isSorted())public boolean isSorted()
IndexedIndexed.indexOf(T) is strenthened
to return a negative number equal to (-(insertion point) - 1) when the value is not present in the set.public void inspectRuntimeShape(RuntimeShapeInspector inspector)
HotLoopCalleeinspector.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.inspectRuntimeShape in interface HotLoopCalleeCopyright © 2011–2022 The Apache Software Foundation. All rights reserved.