Package 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
Description
`MergedIterator(boolean removeDuplicates, Iterator<T>... iterators)`
`MergedIterator(Iterator<T>... iterators)`

## Method Summary

Modifier and Type
Method
Description
`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 Details

### MergedIterator

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

### MergedIterator

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

## Method Details

### 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>>`