Package it.unimi.dsi.io
Class OfflineIterable<T,U extends T>
java.lang.Object
it.unimi.dsi.io.OfflineIterable<T,U>
- All Implemented Interfaces:
Size64
,SafelyCloseable
,Closeable
,AutoCloseable
,Iterable<U>
public class OfflineIterable<T,U extends T>
extends Object
implements Iterable<U>, SafelyCloseable, Size64
An iterable that offers elements that were previously stored offline using specialized
serialization methods. At construction, you provide a serializer
that establishes how elements are written offline; after that, you can
add elements one at a time or in a bulk way.
At any moment, you can get an
OfflineIterator
on this object that returns all the elements added so far. Note that the returned iterator caches the current number of elements,
so each iterator will return just the elements added at the time of its creation.
Warning: The store object provided at construction time is shared by all iterators.
Closing
Both OfflineIterable
and OfflineIterator
are SafelyCloseable
(the latter will
close its input stream when hasNext()
returns false), but for better resource management you should close them after usage.
- Since:
- 0.9.2
- Author:
- Sebastiano Vigna
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic final class
OfflineIterable.OfflineIterator<A,
B extends A> An iterator returned by anOfflineIterable
.static interface
OfflineIterable.Serializer<A,
B extends A> Determines a strategy to serialize and deserialize elements. -
Field Summary
-
Constructor Summary
ConstructorDescriptionOfflineIterable
(OfflineIterable.Serializer<? super T, U> serializer, U store) Creates an offline iterable with given serializer. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Adds a new element at the end of this iterable.void
Adds all the elements of the given iterable at the end of this iterable.void
clear()
void
close()
protected void
finalize()
iterator()
int
size()
Deprecated.long
size64()
Returns the number of elements added so far.Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Field Details
-
serialVersionUID
public static final long serialVersionUID- See Also:
-
-
Constructor Details
-
OfflineIterable
public OfflineIterable(OfflineIterable.Serializer<? super T, U> serializer, U store) throws IOExceptionCreates an offline iterable with given serializer.- Parameters:
serializer
- the serializer to be used.store
- an object that is (re)used by the iterator(s) iterating on this iterable.- Throws:
IOException
-
-
Method Details
-
add
Adds a new element at the end of this iterable.- Parameters:
x
- the element to be added.- Throws:
IOException
-
addAll
Adds all the elements of the given iterable at the end of this iterable.- Parameters:
it
- the iterable producing the elements to be added.- Throws:
IOException
-
iterator
-
clear
- Throws:
IOException
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
-
finalize
-
size
Deprecated.Usesize64()
instead.Returns the number of elements added so far, unless it is too big to fit in an integer (in which case this method will throw an exception). -
size64
public long size64()Returns the number of elements added so far.
-
size64()
instead.