org.apache.cassandra.utils
Class MergeIterator<In,Out>

java.lang.Object
  extended by com.google.common.collect.UnmodifiableIterator<T>
      extended by com.google.common.collect.AbstractIterator<Out>
          extended by org.apache.cassandra.utils.MergeIterator<In,Out>
All Implemented Interfaces:
java.io.Closeable, java.util.Iterator<Out>, CloseableIterator<Out>

public abstract class MergeIterator<In,Out>
extends com.google.common.collect.AbstractIterator<Out>
implements CloseableIterator<Out>

Merges sorted input iterators which individually contain unique items.


Nested Class Summary
protected static class MergeIterator.Candidate<In>
           
static class MergeIterator.Reducer<In,Out>
          Accumulator that collects values of type A, and outputs a value of type B.
 
Field Summary
 java.util.Comparator<In> comp
           
protected  java.util.List<? extends CloseableIterator<In>> iterators
           
protected  java.util.PriorityQueue<MergeIterator.Candidate<In>> queue
           
 
Constructor Summary
protected MergeIterator(java.util.List<? extends CloseableIterator<In>> iters, java.util.Comparator<In> comp)
           
 
Method Summary
protected abstract  void advance()
          Returns consumed items to the queue.
 void close()
           
protected  Out computeNext()
           
protected abstract  Out consume()
          Consumes sorted items from the queue: should only remove items from the queue, not add them.
static
<E> MergeIterator<E,E>
get(java.util.List<? extends CloseableIterator<E>> iters)
           
static
<E> MergeIterator<E,E>
get(java.util.List<? extends CloseableIterator<E>> iters, java.util.Comparator<E> comp)
           
static
<In,Out> MergeIterator<In,Out>
get(java.util.List<? extends CloseableIterator<In>> iters, java.util.Comparator<In> comp, MergeIterator.Reducer<In,Out> reducer)
           
 java.lang.Iterable<? extends CloseableIterator<In>> iterators()
           
 
Methods inherited from class com.google.common.collect.AbstractIterator
endOfData, hasNext, next, peek
 
Methods inherited from class com.google.common.collect.UnmodifiableIterator
remove
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.util.Iterator
hasNext, next, remove
 

Field Detail

comp

public final java.util.Comparator<In> comp

iterators

protected final java.util.List<? extends CloseableIterator<In>> iterators

queue

protected final java.util.PriorityQueue<MergeIterator.Candidate<In>> queue
Constructor Detail

MergeIterator

protected MergeIterator(java.util.List<? extends CloseableIterator<In>> iters,
                        java.util.Comparator<In> comp)
Method Detail

get

public static <E> MergeIterator<E,E> get(java.util.List<? extends CloseableIterator<E>> iters)

get

public static <E> MergeIterator<E,E> get(java.util.List<? extends CloseableIterator<E>> iters,
                                         java.util.Comparator<E> comp)

get

public static <In,Out> MergeIterator<In,Out> get(java.util.List<? extends CloseableIterator<In>> iters,
                                                 java.util.Comparator<In> comp,
                                                 MergeIterator.Reducer<In,Out> reducer)

iterators

public java.lang.Iterable<? extends CloseableIterator<In>> iterators()

consume

protected abstract Out consume()
Consumes sorted items from the queue: should only remove items from the queue, not add them.


advance

protected abstract void advance()
Returns consumed items to the queue.


computeNext

protected final Out computeNext()
Specified by:
computeNext in class com.google.common.collect.AbstractIterator<Out>

close

public void close()
Specified by:
close in interface java.io.Closeable


Copyright © 2011 The Apache Software Foundation