it.unimi.dsi.io
Class OfflineIterable<T,U extends T>

java.lang.Object
  extended by it.unimi.dsi.io.OfflineIterable<T,U>
All Implemented Interfaces:
Size64, SafelyCloseable, Closeable, 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.

Store reuse

Since:
0.9.2
Author:
Sebastiano Vigna

Nested Class Summary
static class OfflineIterable.OfflineIterator<A,B extends A>
          An iterator returned by an OfflineIterable.
static interface OfflineIterable.Serializer<A,B extends A>
          Determines a strategy to serialize and deserialize elements.
 
Field Summary
static long serialVersionUID
           
 
Constructor Summary
OfflineIterable(OfflineIterable.Serializer<? super T,? super U> serializer, U store)
          Creates an offline iterable with given serializer.
 
Method Summary
 void add(T x)
          Adds a new element at the end of this iterable.
 void addAll(Iterable<T> it)
          Adds all the elements of the given iterable at the end of this iterable.
 void close()
           
protected  void finalize()
           
 OfflineIterable.OfflineIterator<T,U> iterator()
           
 long length()
          Deprecated. Use size64() instead.
 int size()
          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).
 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
 

Field Detail

serialVersionUID

public static final long serialVersionUID
See Also:
Constant Field Values
Constructor Detail

OfflineIterable

public OfflineIterable(OfflineIterable.Serializer<? super T,? super U> serializer,
                       U store)
                throws IOException
Creates 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 Detail

add

public void add(T x)
         throws IOException
Adds a new element at the end of this iterable.

Parameters:
x - the element to be added.
Throws:
IOException

addAll

public void addAll(Iterable<T> it)
            throws IOException
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

public OfflineIterable.OfflineIterator<T,U> iterator()
Specified by:
iterator in interface Iterable<U extends T>

close

public void close()
Specified by:
close in interface Closeable

finalize

protected void finalize()
                 throws Throwable
Overrides:
finalize in class Object
Throws:
Throwable

size

public int size()
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).

Specified by:
size in interface Size64
Returns:
the number of elements added so far.
See Also:
size64()

size64

public long size64()
Returns the number of elements added so far.

Specified by:
size64 in interface Size64
Returns:
the number of elements added so far.

length

@Deprecated
public long length()
Deprecated. Use size64() instead.

Returns the number of elements added so far.

Returns:
the number of elements added so far.