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