Package htsjdk.samtools.util
Class SortingLongCollection
java.lang.Object
htsjdk.samtools.util.SortingLongCollection
Accumulate a list of longs that can then be sorted in natural order and iterated over.
If there are more values accumulated than a specified maximum, values are spilled to disk.
Note that because this class returns primitive longs rather than Longs, it does not conform to
any of the Collection iteration interfaces. Use as follows:
1. ctor
2. call add() as many times as desired.
3. call doneAddingStartIteration().
4. call hasNext() and next() until exhausted or had enough.
5. optionally call cleanup() to free space in temporary directory as soon as possible.
If there are few enough values so that they all can be kept in RAM, then the array is sorted
and iterated over trivially.
If there are more values that can fit in RAM, then values are sorted and written to a temp file when the max
number to be stored in RAM is reached. Multiple temp files are then merged during iteration via PriorityQueue.
c.f. SortingCollection for more details.
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionSortingLongCollection
(int maxValuesInRam, File... tmpDir) Prepare to accumulate values to be sortedSortingLongCollection
(int maxValuesInRam, Path... tmpDir) Prepare to accumulate values to be sorted -
Method Summary
Modifier and TypeMethodDescriptionvoid
add
(long value) Add a value to the collection.void
cleanup()
Delete any temporary files.void
This method must be called after done adding, and before calling hasNext() or next().boolean
hasNext()
Call only after doneAddingStartIteration() has been called.long
next()
Call only if hasNext() == true.
-
Field Details
-
SIZEOF
public static final int SIZEOF- See Also:
-
MAX_ITEMS_IN_RAM
public static final int MAX_ITEMS_IN_RAM
-
-
Constructor Details
-
SortingLongCollection
Prepare to accumulate values to be sorted- Parameters:
maxValuesInRam
- how many values to accumulate before spilling to disktmpDir
- Where to write files of values that will not fit in RAM
-
SortingLongCollection
Prepare to accumulate values to be sorted- Parameters:
maxValuesInRam
- how many values to accumulate before spilling to disktmpDir
- Where to write files of values that will not fit in RAM
-
-
Method Details
-
add
public void add(long value) Add a value to the collection.- Parameters:
value
-
-
doneAddingStartIteration
public void doneAddingStartIteration()This method must be called after done adding, and before calling hasNext() or next(). -
cleanup
public void cleanup()Delete any temporary files. After this method is called, no other method calls should be made on this object. -
hasNext
public boolean hasNext()Call only after doneAddingStartIteration() has been called.- Returns:
- true if there is another value to be gotten.
-
next
public long next()Call only if hasNext() == true.- Returns:
- next value from collection, in natural sort order.
-