public class RandomRowSplittable extends java.lang.Object implements RowSplittable
| Constructor and Description |
|---|
RandomRowSplittable(StarTable table)
Constructs a splittable for a given table.
|
| Modifier and Type | Method and Description |
|---|---|
void |
close()
Indicates that this sequence will not be required any more.
|
java.lang.Object |
getCell(int icol)
Returns the contents of a cell in the current row.
|
java.lang.Object[] |
getRow()
Returns the contents of the current table row, as an array
with the same number of elements as there are columns in this
table.
|
boolean |
next()
Attempts to advance the current row to the next one.
|
java.util.function.LongSupplier |
rowIndex()
Returns a supplier for the index of the row currently being processed,
if possible.
|
RandomRowSplittable |
split()
Attempts to partition this object into two halves,
ideally of similar size.
|
long |
splittableSize()
Provides an estimate of the number of processable items in this object.
|
public RandomRowSplittable(StarTable table) throws java.io.IOException
table - random-access tablejava.lang.UnsupportedOperationException - if table is not random-accessjava.io.IOExceptionpublic long splittableSize()
SplittableIf no estimate for the size is available, a negative value should be returned.
splittableSize in interface Splittable<RowSplittable>public RandomRowSplittable split()
SplittableFollowing a successful call, the two parts may be processed in different threads.
split in interface Splittable<RowSplittable>Spliterator.trySplit()public java.util.function.LongSupplier rowIndex()
RowSplittableTypically, the row index will start at 0 and increment for each row, but the numbering may be different depending on the requirements of the implementation or usage.
Before the RowSequence.next() method has been called,
the return value will be one less than the first row index.
After RowSequence.next has returned false,
the value is undefined.
Depending on the implementation, it may not be possible to determine the row index (for instance if the sequence is split into sub-splittables of unknown size). In such cases, this method returns null. The null-ness of the return value must be the same for all instances of the splittable hierarchy for a given sequence, so don't return a non-null value for the first splittable and then null values for some or all of its children.
rowIndex in interface RowSplittablepublic boolean next()
throws java.io.IOException
RowSequencetrue is returned the attempt has been successful,
and if false is returned there are no more rows in this
sequence.
Since the initial position of a RowSequence is before the first row,
this method must be called before current row data
can be accessed using the
RowSequence.getCell(int) or RowSequence.getRow() methods.next in interface RowSequencenext in interface Sequencetrue iff this sequence has been advanced to the
next rowjava.io.IOException - if there is some errorpublic java.lang.Object getCell(int icol)
throws java.io.IOException
RowSequencegetColumnInfo(icol).getContentClass().
An unchecked exception will be thrown if there is no current
row (next has not yet been called).getCell in interface RowDatagetCell in interface RowSequenceicol - column indexicol in the current rowjava.io.IOException - if there is an error reading the datapublic java.lang.Object[] getRow()
throws java.io.IOException
RowSequencenext has not yet been called).getRow in interface RowDatagetRow in interface RowSequenceirowjava.io.IOException - if there is an error reading the datapublic void close()
throws java.io.IOException
RowSequenceclose is undefined.close in interface java.io.Closeableclose in interface java.lang.AutoCloseableclose in interface RowSequencejava.io.IOException