org.jfree.data

## Class Range

- java.lang.Object
- - org.jfree.data.Range

- All Implemented Interfaces:
    java.io.Serializable

      public class Range
      extends java.lang.Object
      implements java.io.Serializable

  Represents an immutable range of values.
  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `Range(double lower, double upper)` Creates a new range.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static Range` | `combine(Range range1, Range range2)` Creates a new range by combining two existing ranges.
    `static Range` | `combineIgnoringNaN(Range range1, Range range2)` Returns a new range that spans both `range1` and `range2`.
    `double` | `constrain(double value)` Returns the value within the range that is closest to the specified value.
    `boolean` | `contains(double value)` Returns `true` if the range contains the specified value and `false` otherwise.
    `boolean` | `equals(java.lang.Object obj)` Tests this object for equality with an arbitrary object.
    `static Range` | `expand(Range range, double lowerMargin, double upperMargin)` Creates a new range by adding margins to an existing range.
    `static Range` | `expandToInclude(Range range, double value)` Returns a range that includes all the values in the specified `range` AND the specified `value`.
    `double` | `getCentralValue()` Returns the central value for the range.
    `double` | `getLength()` Returns the length of the range.
    `double` | `getLowerBound()` Returns the lower bound for the range.
    `double` | `getUpperBound()` Returns the upper bound for the range.
    `int` | `hashCode()` Returns a hash code.
    `boolean` | `intersects(double b0, double b1)` Returns `true` if the range intersects with the specified range, and `false` otherwise.
    `boolean` | `intersects(Range range)` Returns `true` if the range intersects with the specified range, and `false` otherwise.
    `boolean` | `isNaNRange()` Returns `true` if both the lower and upper bounds are `Double.NaN`, and `false` otherwise.
    `static Range` | `scale(Range base, double factor)` Scales the range by the specified factor.
    `static Range` | `shift(Range base, double delta)` Shifts the range by the specified amount.
    `static Range` | `shift(Range base, double delta, boolean allowZeroCrossing)` Shifts the range by the specified amount.
    `java.lang.String` | `toString()` Returns a string representation of this Range.

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

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

- - ### Constructor Detail

    - #### Range

          public Range(double lower,
                       double upper)

      Creates a new range.
      Parameters:
        `lower` - the lower bound (must be <= upper bound).
        `upper` - the upper bound (must be >= lower bound).

  - ### Method Detail

    - #### getLowerBound

          public double getLowerBound()

      Returns the lower bound for the range.
      Returns:
        The lower bound.

    - #### getUpperBound

          public double getUpperBound()

      Returns the upper bound for the range.
      Returns:
        The upper bound.

    - #### getLength

          public double getLength()

      Returns the length of the range.
      Returns:
        The length.

    - #### getCentralValue

          public double getCentralValue()

      Returns the central value for the range.
      Returns:
        The central value.

    - #### contains

          public boolean contains(double value)

      Returns `true` if the range contains the specified value and `false` otherwise.
      Parameters:
        `value` - the value to lookup.
      Returns:
        `true` if the range contains the specified value.

    - #### intersects

          public boolean intersects(double b0,
                                    double b1)

      Returns `true` if the range intersects with the specified range, and `false` otherwise.
      Parameters:
        `b0` - the lower bound (should be <= b1).
        `b1` - the upper bound (should be >= b0).
      Returns:
        A boolean.

    - #### intersects

          public boolean intersects(Range range)

      Returns `true` if the range intersects with the specified range, and `false` otherwise.
      Parameters:
        `range` - another range (`null` not permitted).
      Returns:
        A boolean.
      Since:
        1.0.9

    - #### constrain

          public double constrain(double value)

      Returns the value within the range that is closest to the specified value.
      Parameters:
        `value` - the value.
      Returns:
        The constrained value.

    - #### combine

          public static Range combine(Range range1,
                                      Range range2)

      Creates a new range by combining two existing ranges.

      Note that:

      - either range can be `null`, in which case the other range is returned;
      - if both ranges are `null` the return value is `null`.
      Parameters:
        `range1` - the first range (`null` permitted).
        `range2` - the second range (`null` permitted).
      Returns:
        A new range (possibly `null`).

    - #### combineIgnoringNaN

          public static Range combineIgnoringNaN(Range range1,
                                                 Range range2)

      Returns a new range that spans both `range1` and `range2`. This method has a special handling to ignore Double.NaN values.
      Parameters:
        `range1` - the first range (`null` permitted).
        `range2` - the second range (`null` permitted).
      Returns:
        A new range (possibly `null`).
      Since:
        1.0.15

    - #### expandToInclude

          public static Range expandToInclude(Range range,
                                              double value)

      Returns a range that includes all the values in the specified `range` AND the specified `value`.
      Parameters:
        `range` - the range (`null` permitted).
        `value` - the value that must be included.
      Returns:
        A range.
      Since:
        1.0.1

    - #### expand

          public static Range expand(Range range,
                                     double lowerMargin,
                                     double upperMargin)

      Creates a new range by adding margins to an existing range.
      Parameters:
        `range` - the range (`null` not permitted).
        `lowerMargin` - the lower margin (expressed as a percentage of the range length).
        `upperMargin` - the upper margin (expressed as a percentage of the range length).
      Returns:
        The expanded range.

    - #### shift

          public static Range shift(Range base,
                                    double delta)

      Shifts the range by the specified amount.
      Parameters:
        `base` - the base range (`null` not permitted).
        `delta` - the shift amount.
      Returns:
        A new range.

    - #### shift

          public static Range shift(Range base,
                                    double delta,
                                    boolean allowZeroCrossing)

      Shifts the range by the specified amount.
      Parameters:
        `base` - the base range (`null` not permitted).
        `delta` - the shift amount.
        `allowZeroCrossing` - a flag that determines whether or not the bounds of the range are allowed to cross zero after adjustment.
      Returns:
        A new range.

    - #### scale

          public static Range scale(Range base,
                                    double factor)

      Scales the range by the specified factor.
      Parameters:
        `base` - the base range (`null` not permitted).
        `factor` - the scaling factor (must be non-negative).
      Returns:
        A new range.
      Since:
        1.0.9

    - #### equals

          public boolean equals(java.lang.Object obj)

      Tests this object for equality with an arbitrary object.
      Overrides:
        `equals` in class `java.lang.Object`
      Parameters:
        `obj` - the object to test against (`null` permitted).
      Returns:
        A boolean.

    - #### isNaNRange

          public boolean isNaNRange()

      Returns `true` if both the lower and upper bounds are `Double.NaN`, and `false` otherwise.
      Returns:
        A boolean.
      Since:
        1.0.18

    - #### hashCode

          public int hashCode()

      Returns a hash code.
      Overrides:
        `hashCode` in class `java.lang.Object`
      Returns:
        A hash code.

    - #### toString

          public java.lang.String toString()

      Returns a string representation of this Range.
      Overrides:
        `toString` in class `java.lang.Object`
      Returns:
        A String "Range[lower,upper]" where lower=lower range and upper=upper range.