Package net.sf.saxon.expr.sort

## Class SortedGroupIterator

- java.lang.Object
- - net.sf.saxon.expr.sort.SortedIterator
  - - net.sf.saxon.expr.sort.SortedGroupIterator

- All Implemented Interfaces:
    `java.io.Closeable`, `java.lang.AutoCloseable`, `LastPositionFinder`, `GroupIterator`, `SequenceIterator`, `LookaheadIterator`

      public class SortedGroupIterator
      extends SortedIterator
      implements GroupIterator

  A SortedGroupIterator is a modified SortedIterator. It sorts a sequence of groups, and is itself a GroupIterator. The modifications retain extra information about the items being sorted. The items are each the leading item of a group, and as well as the item itself, the iterator preserves information about the group: specifically, an iterator over the items in the group, and the value of the grouping key (if any).

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface net.sf.saxon.om.SequenceIterator

      `SequenceIterator.Property`

  - ### Field Summary

    - ### Fields inherited from class net.sf.saxon.expr.sort.SortedIterator

      `base, comparators, context, count, position, sortKeyEvaluator, values`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SortedGroupIterator​(XPathContext context, GroupIterator base, SortKeyEvaluator sortKeyEvaluator, AtomicComparer[] comparators)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `buildArray()` | Override the method that builds the array of values and sort keys.
    `AtomicSequence` | `getCurrentGroupingKey()` | Get the grouping key of the current group
    `ManualGroupIterator` | `getSnapShot​(XPathContext context)` | Get a sequence which is a snapshot of this sequence at the current position
    `SequenceIterator` | `iterateCurrentGroup()` | Get an iterator over the members of the current group, in population order.

    - ### Methods inherited from class net.sf.saxon.expr.sort.SortedIterator

      `getLength, getProperties, hasNext, next, setHostLanguage`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface net.sf.saxon.om.SequenceIterator

      `close, forEachOrFail, getProperties, materialize, next`

- - ### Constructor Detail

    - #### SortedGroupIterator

          public SortedGroupIterator​(XPathContext context,
                                     GroupIterator base,
                                     SortKeyEvaluator sortKeyEvaluator,
                                     AtomicComparer[] comparators)

  - ### Method Detail

    - #### buildArray

          protected void buildArray()
                             throws XPathException

      Override the method that builds the array of values and sort keys.
      Overrides:
        `buildArray` in class `SortedIterator`
      Throws:
        `XPathException` - in the event of a dynamic error

    - #### getCurrentGroupingKey

          public AtomicSequence getCurrentGroupingKey()

      Description copied from interface: `GroupIterator`
      Get the grouping key of the current group
      Specified by:
        `getCurrentGroupingKey` in interface `GroupIterator`
      Returns:
        the current grouping key in the case of group-by or group-adjacent, or null in the case of group-starting-with and group-ending-with

    - #### iterateCurrentGroup

          public SequenceIterator iterateCurrentGroup()
                                               throws XPathException

      Description copied from interface: `GroupIterator`
      Get an iterator over the members of the current group, in population order. This must always be a clean iterator, that is, an iterator that starts at the first item of the group.
      Specified by:
        `iterateCurrentGroup` in interface `GroupIterator`
      Returns:
        an iterator over all the members of the current group, in population order.
      Throws:
        `XPathException` - if a dynamic error occurs

    - #### getSnapShot

          public ManualGroupIterator getSnapShot​(XPathContext context)
                                          throws XPathException

      Description copied from interface: `GroupIterator`
      Get a sequence which is a snapshot of this sequence at the current position
      Specified by:
        `getSnapShot` in interface `GroupIterator`
      Throws:
        `XPathException`