Class InterningOrdinalDomain<S,​E extends OrdinalValue<E>>

  • All Implemented Interfaces:
    java.lang.Iterable<E>

    @ThreadSafe
    public abstract class InterningOrdinalDomain<S,​E extends OrdinalValue<E>>
    extends OrdinalDomain<E>
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.Map<S,​E> internedInstances  
      private java.util.List<E> values  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected abstract E extractValue​(S valueSample, int ordinal)  
      E get​(int ordinal)
      Gets element from domain by corresponding ordinal value.
      E internOrdinal​(S valueSample)  
      java.util.Iterator<E> iterator()
      Iterator over all present inhabitants of ordinal domain.
      int length()
      Current length of ordinal domain.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.lang.Iterable

        forEach, spliterator
    • Field Detail

      • values

        private final java.util.List<E extends OrdinalValue<E>> values
      • internedInstances

        private final java.util.Map<S,​E extends OrdinalValue<E>> internedInstances
    • Constructor Detail

      • InterningOrdinalDomain

        public InterningOrdinalDomain()
    • Method Detail

      • internOrdinal

        public final E internOrdinal​(S valueSample)
      • extractValue

        protected abstract E extractValue​(S valueSample,
                                          int ordinal)
      • iterator

        public java.util.Iterator<E> iterator()
        Description copied from class: OrdinalDomain
        Iterator over all present inhabitants of ordinal domain.
        Specified by:
        iterator in interface java.lang.Iterable<S>
        Overrides:
        iterator in class OrdinalDomain<E extends OrdinalValue<E>>
        Returns:
        snapshot iterator of elements in ordinal domain.
      • get

        public final E get​(int ordinal)
        Description copied from class: OrdinalDomain
        Gets element from domain by corresponding ordinal value. It is guaranteed that returned element will have OrdinalValue.ordinal() value equal to supplied ordinal parameter.
        Specified by:
        get in class OrdinalDomain<E extends OrdinalValue<E>>
        Parameters:
        ordinal - ordinal value
        Returns:
        the element by ordinal value
      • length

        public final int length()
        Description copied from class: OrdinalDomain
        Current length of ordinal domain. Be caution that length is not required to be stable and could grow, as such it could be used as a hint.
        Specified by:
        length in class OrdinalDomain<E extends OrdinalValue<E>>
        Returns:
        the domain length: current max ordinal value plus one