Class DiscreteDomain<C extends Comparable>


  • @GwtCompatible
    public abstract class DiscreteDomain<C extends Comparable>
    extends Object
    A descriptor for a discrete Comparable domain such as all Integer instances. A discrete domain is one that supports the three basic operations: next(C), previous(C) and distance(C, C), according to their specifications. The methods minValue() and maxValue() should also be overridden for bounded types.

    A discrete domain always represents the entire set of values of its type; it cannot represent partial domains such as "prime integers" or "strings of length 5."

    See the Guava User Guide section on DiscreteDomain.

    Since:
    10.0
    Author:
    Kevin Bourrillion
    • Constructor Detail

      • DiscreteDomain

        protected DiscreteDomain()
        Constructor for use by subclasses.
    • Method Detail

      • integers

        public static DiscreteDomain<Integerintegers()
        Returns the discrete domain for values of type Integer.
        Since:
        14.0 (since 10.0 as DiscreteDomains.integers())
      • longs

        public static DiscreteDomain<Longlongs()
        Returns the discrete domain for values of type Long.
        Since:
        14.0 (since 10.0 as DiscreteDomains.longs())
      • next

        public abstract C next​(C value)
        Returns the unique least value of type C that is greater than value, or null if none exists. Inverse operation to previous(C).
        Parameters:
        value - any value of type C
        Returns:
        the least value greater than value, or null if value is maxValue()
      • previous

        public abstract C previous​(C value)
        Returns the unique greatest value of type C that is less than value, or null if none exists. Inverse operation to next(C).
        Parameters:
        value - any value of type C
        Returns:
        the greatest value less than value, or null if value is minValue()
      • distance

        public abstract long distance​(C start,
                                      C end)
        Returns a signed value indicating how many nested invocations of next(C) (if positive) or previous(C) (if negative) are needed to reach end starting from start. For example, if end = next(next(next(start))), then distance(start, end) == 3 and distance(end, start) == -3. As well, distance(a, a) is always zero.

        Note that this function is necessarily well-defined for any discrete type.

        Returns:
        the distance as described above, or Long.MIN_VALUE or Long.MAX_VALUE if the distance is too small or too large, respectively.