org.apache.lucene.util

## Class MergedIterator<T extends Comparable<T>>

- java.lang.Object
- - org.apache.lucene.util.MergedIterator<T>

All Implemented Interfaces:
  Iterator<T>

    public final class MergedIterator<T extends Comparable<T>>
    extends Object
    implements Iterator<T>

Provides a merged sorted view from several sorted iterators.

If built with `removeDuplicates` set to true and an element appears in multiple iterators then it is deduplicated, that is this iterator returns the sorted union of elements.

If built with `removeDuplicates` set to false then all elements in all iterators are returned.

Caveats:

- The behavior is undefined if the iterators are not actually sorted.
- Null elements are unsupported.
- If removeDuplicates is set to true and if a single iterator contains duplicates then they will not be deduplicated.
- When elements are deduplicated it is not defined which one is returned.
- If removeDuplicates is set to false then the order in which duplicates are returned isn't defined.

NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

### Constructor Summary

Constructors
Constructor and Description
`MergedIterator(boolean removeDuplicates, Iterator<T>... iterators)`
`MergedIterator(Iterator<T>... iterators)`

### Method Summary

All Methods Instance Methods Concrete Methods
`boolean` `hasNext()`
`T` `next()`
`void` `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`

### Constructor Detail

#### MergedIterator

    public MergedIterator(Iterator<T>... iterators)

#### MergedIterator

    public MergedIterator(boolean removeDuplicates,
                          Iterator<T>... iterators)

### Method Detail

#### hasNext

    public boolean hasNext()

Specified by:
  `hasNext` in interface `Iterator<T extends Comparable<T>>`

#### next

    public T next()

Specified by:
  `next` in interface `Iterator<T extends Comparable<T>>`

#### remove

    public void remove()

Specified by:
  `remove` in interface `Iterator<T extends Comparable<T>>`