org.apache.cassandra.utils

## Class MergeIterator<In,Out>

- java.lang.Object
- - org.apache.cassandra.utils.AbstractIterator<Out>
  - - org.apache.cassandra.utils.MergeIterator<In,Out>

All Implemented Interfaces:
  com.google.common.collect.PeekingIterator<Out>, java.lang.AutoCloseable, java.util.Iterator<Out>, CloseableIterator<Out>, IMergeIterator<In,Out>

    public abstract class MergeIterator<In,Out>
    extends AbstractIterator<Out>
    implements IMergeIterator<In,Out>

Merges sorted input iterators which individually contain unique items.

### Nested Class Summary

Nested Classes
`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

Fields
`protected java.util.List<? extends java.util.Iterator<In>>` `iterators`
`protected MergeIterator.Reducer<In,Out>` `reducer`

### Constructor Summary

Constructors
`protected` `MergeIterator(java.util.List<? extends java.util.Iterator<In>> iters, MergeIterator.Reducer<In,Out> reducer)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`void` `close()`
`static <In,Out> MergeIterator<In,Out>` `get(java.util.List<? extends java.util.Iterator<In>> sources, java.util.Comparator<? super In> comparator, MergeIterator.Reducer<In,Out> reducer)`
`java.lang.Iterable<? extends java.util.Iterator<In>>` `iterators()`

### Methods inherited from class org.apache.cassandra.utils.AbstractIterator

`computeNext, endOfData, hasNext, next, peek, 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

`forEachRemaining, hasNext, next, remove`

### Field Detail

#### reducer

    protected final MergeIterator.Reducer<In,Out> reducer

#### iterators

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

### Constructor Detail

#### MergeIterator

    protected MergeIterator(java.util.List<? extends java.util.Iterator<In>> iters,
                            MergeIterator.Reducer<In,Out> reducer)

### Method Detail

#### get

    public static <In,Out> MergeIterator<In,Out> get(java.util.List<? extends java.util.Iterator<In>> sources,
                                                     java.util.Comparator<? super In> comparator,
                                                     MergeIterator.Reducer<In,Out> reducer)

#### iterators

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

Specified by:
  `iterators` in interface `IMergeIterator<In,Out>`

#### close

    public void close()

Specified by:
  `close` in interface `java.lang.AutoCloseable`
Specified by:
  `close` in interface `CloseableIterator<Out>`