org.optaplanner.core.impl.heuristic.selector.value.decorator
Class SelectedCountLimitValueSelector
java.lang.Object
org.optaplanner.core.impl.heuristic.selector.AbstractSelector
org.optaplanner.core.impl.heuristic.selector.value.AbstractValueSelector
org.optaplanner.core.impl.heuristic.selector.value.decorator.SelectedCountLimitValueSelector
- All Implemented Interfaces:
- Iterable<Object>, EventListener, IterableSelector<Object>, Selector, EntityIndependentValueSelector, ValueSelector, PhaseLifecycleListener, SolverLifecycleListener
public class SelectedCountLimitValueSelector
- extends AbstractValueSelector
- implements EntityIndependentValueSelector
childValueSelector
protected final ValueSelector childValueSelector
selectedCountLimit
protected final long selectedCountLimit
SelectedCountLimitValueSelector
public SelectedCountLimitValueSelector(ValueSelector childValueSelector,
long selectedCountLimit)
- Unlike most of the other
ValueSelector
decorations,
this one works for an entity dependent ValueSelector
too.
- Parameters:
childValueSelector
- never null, if any of the EntityIndependentValueSelector
specific methods
are going to be used, this parameter must also implement that interfaceselectedCountLimit
- at least 0
getVariableDescriptor
public GenuineVariableDescriptor getVariableDescriptor()
- Specified by:
getVariableDescriptor
in interface ValueSelector
- Returns:
- never null
isCountable
public boolean isCountable()
- Description copied from interface:
Selector
- If false, then
Selector.isNeverEnding()
is true.
- Specified by:
isCountable
in interface Selector
- Returns:
- true if all the
ValueRange
s are countable
(for example a double value range between 1.2 and 1.4 is not countable)
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
- Returns:
- true if the
Iterator.hasNext()
of the Iterator
created by Iterable.iterator()
never returns false (except when it's empty).
getSize
public long getSize(Object entity)
- Description copied from interface:
ValueSelector
- Similar to
IterableSelector.getSize()
, but requires an entity.
- Specified by:
getSize
in interface ValueSelector
- Parameters:
entity
- never null
- Returns:
- the approximate number of elements generated by this
Selector
, always >= 0
getSize
public long getSize()
- Description copied from interface:
IterableSelector
- A random JIT
Selector
with Selector.isNeverEnding()
true should return a size
as if it would be able to return each distinct element only once,
because the size can be used in SelectionProbabilityWeightFactory
.
- Specified by:
getSize
in interface IterableSelector<Object>
- Returns:
- the approximate number of elements generated by this
Selector
, always >= 0
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
- Parameters:
entity
- never null
- Returns:
- never null
iterator
public Iterator<Object> iterator()
- Specified by:
iterator
in interface Iterable<Object>
endingIterator
public Iterator<Object> endingIterator(Object entity)
- Description copied from interface:
ValueSelector
- If
Selector.isNeverEnding()
is true, then ValueSelector.iterator(Object)
will never end.
This returns an ending Iterator
, that tries to match ValueSelector.iterator(Object)
as much as possible,
but return each distinct element only once
and therefore it might not respect the configuration of this ValueSelector
entirely.
- Specified by:
endingIterator
in interface ValueSelector
- Returns:
- never null
- See Also:
ValueSelector.iterator(Object)
toString
public String toString()
- Overrides:
toString
in class Object
Copyright © 2006-2014 JBoss by Red Hat. All Rights Reserved.