Class ArrayTuple
- All Implemented Interfaces:
StreamingExternalizable,CanonicalizableTuple<ArrayTuple>,Externalizable,Serializable,Comparable<ArrayTuple>
public class ArrayTuple extends Object implements Comparable<ArrayTuple>, Externalizable, StreamingExternalizable, CanonicalizableTuple<ArrayTuple>
N-Tuple key class backed by an array of elements.
- See Also:
- Serialized Form
-
Constructor Summary
Constructors Constructor Description ArrayTuple()This is required forExternalizablesupport, but should not be used otherwise.ArrayTuple(Object... elements)Construct a tuple backed by the supplied array of elements. -
Method Summary
Modifier and Type Method Description ArrayTuplecanonicalize(UnaryOperator<Object> canonicalizer)Canonicalize this tuple.intcompareTo(ArrayTuple other)booleanequals(Object other)<T> TgetElement(int elementIndex)Object[]getElements()Return a new array of the elements of this tuple, safe for any use.inthashCode()voidreadExternal(ObjectInput in)voidreadExternalStreaming(ObjectInput in, gnu.trove.map.TIntObjectMap<SerializationUtils.Reader> cachedReaders)Alternative toExternalizable.readExternal(ObjectInput)for use when a series of tuples of the same type with the same element types are being read in iterative fashion.StringtoString()voidwriteExternal(ObjectOutput out)voidwriteExternalStreaming(ObjectOutput out, gnu.trove.map.TIntObjectMap<SerializationUtils.Writer> cachedWriters)Alternative toExternalizable.writeExternal(ObjectOutput)for use when a series of tuples of the same type with the same element types are being written in iterative fashion.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface com.illumon.iris.db.util.serialization.StreamingExternalizable
initializeExternalStreaming
-
Constructor Details
-
ArrayTuple
Construct a tuple backed by the supplied array of elements. The elements array should not be changed after this call.- Parameters:
elements- The array to wrap
-
ArrayTuple
public ArrayTuple()This is required forExternalizablesupport, but should not be used otherwise.
-
-
Method Details
-
getElement
public final <T> T getElement(int elementIndex) -
getElements
Return a new array of the elements of this tuple, safe for any use.- Returns:
- A new array of the elements of this tuple
-
hashCode
public final int hashCode() -
equals
-
compareTo
- Specified by:
compareToin interfaceComparable<ArrayTuple>
-
writeExternal
- Specified by:
writeExternalin interfaceExternalizable- Throws:
IOException
-
readExternal
- Specified by:
readExternalin interfaceExternalizable- Throws:
IOExceptionClassNotFoundException
-
writeExternalStreaming
public void writeExternalStreaming(@NotNull ObjectOutput out, @NotNull gnu.trove.map.TIntObjectMap<SerializationUtils.Writer> cachedWriters) throws IOExceptionDescription copied from interface:StreamingExternalizableAlternative to
Externalizable.writeExternal(ObjectOutput)for use when a series of tuples of the same type with the same element types are being written in iterative fashion.Primitive elements should be written with their primitive write methods (e.g.
DataOutput.writeInt(int)).Object elements are preceded by a boolean, true if null, false otherwise. The first non-null value for a given Object element is then preceded by the name of the class. All non-null values are then written with a writer method from
SerializationUtils.getWriter(Class, ObjectOutput), cached in cachedWriters.- Specified by:
writeExternalStreamingin interfaceStreamingExternalizable- Parameters:
out- The outputcachedWriters- The cached writers- Throws:
IOException
-
readExternalStreaming
public void readExternalStreaming(@NotNull ObjectInput in, @NotNull gnu.trove.map.TIntObjectMap<SerializationUtils.Reader> cachedReaders) throws ExceptionDescription copied from interface:StreamingExternalizableAlternative to
Externalizable.readExternal(ObjectInput)for use when a series of tuples of the same type with the same element types are being read in iterative fashion.Primitive elements should be read with their primitive read methods (e.g.
DataInput.readInt()).Object elements are preceded by a boolean, true if null, false otherwise. The first non-null value for a given Object element is then preceded by the name of the class. All non-null values are then read with a reader method from
SerializationUtils.getReader(Class, ObjectInput), cached in cachedReaders.- Specified by:
readExternalStreamingin interfaceStreamingExternalizable- Parameters:
in- The inputcachedReaders- The cached readers- Throws:
Exception
-
toString
-
canonicalize
Description copied from interface:CanonicalizableTupleCanonicalize this tuple.- Specified by:
canonicalizein interfaceCanonicalizableTuple<ArrayTuple>- Parameters:
canonicalizer- The canonicalization operator to use on each object element.- Returns:
- This tuple if already canonical, else a new, canonical tuple of the same type
-