Package org.optaplanner.core.impl.heuristic.selector.value.decorator

## Class SortingValueSelector<Solution_>

- java.lang.Object
- - org.optaplanner.core.impl.heuristic.selector.AbstractSelector<Solution_>
  - - org.optaplanner.core.impl.heuristic.selector.value.AbstractValueSelector<Solution_>
    - - org.optaplanner.core.impl.heuristic.selector.value.decorator.AbstractCachingValueSelector<Solution_>
      - - org.optaplanner.core.impl.heuristic.selector.value.decorator.SortingValueSelector<Solution_>

- All Implemented Interfaces:
    `Iterable<Object>`, `EventListener`, `SelectionCacheLifecycleListener<Solution_>`, `IterableSelector<Solution_,​Object>`, `Selector<Solution_>`, `EntityIndependentValueSelector<Solution_>`, `ValueSelector<Solution_>`, `PhaseLifecycleListener<Solution_>`, `SolverLifecycleListener<Solution_>`

      public class SortingValueSelector<Solution_>
      extends AbstractCachingValueSelector<Solution_>
      implements EntityIndependentValueSelector<Solution_>

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected SelectionSorter<Solution_,​Object>` | `sorter` |

    - ### Fields inherited from class org.optaplanner.core.impl.heuristic.selector.value.decorator.AbstractCachingValueSelector

      `cachedValueList, cacheType, childValueSelector`

    - ### Fields inherited from class org.optaplanner.core.impl.heuristic.selector.AbstractSelector

      `logger, phaseLifecycleSupport, workingRandom`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SortingValueSelector​(EntityIndependentValueSelector<Solution_> childValueSelector, SelectionCacheType cacheType, SelectionSorter<Solution_,​Object> sorter)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `constructCache​(SolverScope<Solution_> solverScope)` |
    `boolean` | `isNeverEnding()` | Is true if `Selector.isCountable()` is false or if this selector is in random order (for most cases).
    `Iterator<Object>` | `iterator()` |
    `Iterator<Object>` | `iterator​(Object entity)` | Similar to `Iterable.iterator()`, but requires an entity.
    `String` | `toString()` |

    - ### Methods inherited from class org.optaplanner.core.impl.heuristic.selector.value.decorator.AbstractCachingValueSelector

      `disposeCache, endingIterator, endingIterator, getCacheType, getChildValueSelector, getSize, getSize, getVariableDescriptor, isCountable`

    - ### Methods inherited from class org.optaplanner.core.impl.heuristic.selector.AbstractSelector

      `phaseEnded, phaseStarted, solvingEnded, solvingStarted, stepEnded, stepStarted`

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

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

    - ### Methods inherited from interface java.lang.Iterable

      `forEach`

    - ### Methods inherited from interface org.optaplanner.core.impl.heuristic.selector.IterableSelector

      `getSize, spliterator`

    - ### Methods inherited from interface org.optaplanner.core.impl.phase.event.PhaseLifecycleListener

      `phaseEnded, phaseStarted, stepEnded, stepStarted`

    - ### Methods inherited from interface org.optaplanner.core.impl.heuristic.selector.Selector

      `getCacheType, isCountable`

    - ### Methods inherited from interface org.optaplanner.core.impl.solver.event.SolverLifecycleListener

      `solvingEnded, solvingStarted`

    - ### Methods inherited from interface org.optaplanner.core.impl.heuristic.selector.value.ValueSelector

      `endingIterator, getSize, getVariableDescriptor`

- - ### Field Detail

    - #### sorter

          protected final SelectionSorter<Solution_,​Object> sorter

  - ### Constructor Detail

    - #### SortingValueSelector

          public SortingValueSelector​(EntityIndependentValueSelector<Solution_> childValueSelector,
                                      SelectionCacheType cacheType,
                                      SelectionSorter<Solution_,​Object> sorter)

  - ### Method Detail

    - #### constructCache

          public void constructCache​(SolverScope<Solution_> solverScope)

      Specified by:
        `constructCache` in interface `SelectionCacheLifecycleListener<Solution_>`
      Overrides:
        `constructCache` in class `AbstractCachingValueSelector<Solution_>`

    - #### isNeverEnding

          public boolean isNeverEnding()

      Description copied from interface: `Selector`
      Is true if `Selector.isCountable()` is false or if this selector is in random order (for most cases). Is never true when this selector is in shuffled order (which is less scalable but more exact).
      Specified by:
        `isNeverEnding` in interface `Selector<Solution_>`
      Returns:
        true if the `Iterator.hasNext()` of the `Iterator` created by `Iterable.iterator()` never returns false (except when it's empty).

    - #### iterator

          public Iterator<Object> iterator​(Object entity)

      Description copied from interface: `ValueSelector`
      Similar to `Iterable.iterator()`, but requires an entity.
      Specified by:
        `iterator` in interface `ValueSelector<Solution_>`
      Parameters:
        `entity` - never null
      Returns:
        never null

    - #### iterator

          public Iterator<Object> iterator()

      Specified by:
        `iterator` in interface `Iterable<Solution_>`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`