Class Range<C extends Comparable<? super C>>

java.lang.Object
cloud.opencode.base.collections.Range<C>
Type Parameters:
C - Comparable type | 可比较类型
All Implemented Interfaces:
Serializable

public final class Range<C extends Comparable<? super C>> extends Object implements Serializable
Range - A contiguous range of Comparable values Range - 可比较值的连续范围

Represents a contiguous range of values with configurable endpoint behavior (open or closed). Immutable and thread-safe.

表示具有可配置端点行为(开放或关闭)的连续值范围。不可变且线程安全。

Features | 主要功能:

  • Open/closed endpoints - 开放/关闭端点
  • Range operations (contains, intersection, union) - 范围操作(包含、交集、并集)
  • Immutable - 不可变
  • Thread-safe - 线程安全

Usage Examples | 使用示例:

// Closed range [1, 10] - 闭区间
Range<Integer> closed = Range.closed(1, 10);

// Open range (1, 10) - 开区间
Range<Integer> open = Range.open(1, 10);

// Half-open [1, 10) - 半开区间
Range<Integer> closedOpen = Range.closedOpen(1, 10);

// Check contains - 检查包含
boolean contains = Range.closed(1, 10).contains(5);  // true

// Check intersection - 检查交集
boolean intersects = Range.closed(1, 5).isConnected(Range.closed(3, 8));

Performance | 性能特性:

  • contains: O(1) - contains: O(1)
  • intersection: O(1) - intersection: O(1)
  • encloses: O(1) - encloses: O(1)

Security | 安全性:

  • Thread-safe: Yes (immutable) - 线程安全: 是(不可变)
  • Null-safe: No (nulls not allowed) - 空值安全: 否(不允许空值)
Since:
JDK 25, opencode-base-collections V1.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Method Details

    • closed

      public static <C extends Comparable<? super C>> Range<C> closed(C lower, C upper)
      Create a closed range [lower, upper]. 创建闭区间 [lower, upper]。
      Type Parameters:
      C - Comparable type | 可比较类型
      Parameters:
      lower - lower endpoint | 下端点
      upper - upper endpoint | 上端点
      Returns:
      closed range | 闭区间
    • open

      public static <C extends Comparable<? super C>> Range<C> open(C lower, C upper)
      Create an open range (lower, upper). 创建开区间 (lower, upper)。
      Type Parameters:
      C - Comparable type | 可比较类型
      Parameters:
      lower - lower endpoint | 下端点
      upper - upper endpoint | 上端点
      Returns:
      open range | 开区间
    • closedOpen

      public static <C extends Comparable<? super C>> Range<C> closedOpen(C lower, C upper)
      Create a closed-open range [lower, upper). 创建左闭右开区间 [lower, upper)。
      Type Parameters:
      C - Comparable type | 可比较类型
      Parameters:
      lower - lower endpoint | 下端点
      upper - upper endpoint | 上端点
      Returns:
      closed-open range | 左闭右开区间
    • openClosed

      public static <C extends Comparable<? super C>> Range<C> openClosed(C lower, C upper)
      Create an open-closed range (lower, upper]. 创建左开右闭区间 (lower, upper]。
      Type Parameters:
      C - Comparable type | 可比较类型
      Parameters:
      lower - lower endpoint | 下端点
      upper - upper endpoint | 上端点
      Returns:
      open-closed range | 左开右闭区间
    • atMost

      public static <C extends Comparable<? super C>> Range<C> atMost(C upper)
      Create a range with no lower bound (-∞, upper]. 创建无下界的范围 (-∞, upper]。
      Type Parameters:
      C - Comparable type | 可比较类型
      Parameters:
      upper - upper endpoint | 上端点
      Returns:
      range | 范围
    • lessThan

      public static <C extends Comparable<? super C>> Range<C> lessThan(C upper)
      Create a range with no lower bound (-∞, upper). 创建无下界的范围 (-∞, upper)。
      Type Parameters:
      C - Comparable type | 可比较类型
      Parameters:
      upper - upper endpoint | 上端点
      Returns:
      range | 范围
    • atLeast

      public static <C extends Comparable<? super C>> Range<C> atLeast(C lower)
      Create a range with no upper bound [lower, +∞). 创建无上界的范围 [lower, +∞)。
      Type Parameters:
      C - Comparable type | 可比较类型
      Parameters:
      lower - lower endpoint | 下端点
      Returns:
      range | 范围
    • greaterThan

      public static <C extends Comparable<? super C>> Range<C> greaterThan(C lower)
      Create a range with no upper bound (lower, +∞). 创建无上界的范围 (lower, +∞)。
      Type Parameters:
      C - Comparable type | 可比较类型
      Parameters:
      lower - lower endpoint | 下端点
      Returns:
      range | 范围
    • all

      public static <C extends Comparable<? super C>> Range<C> all()
      Create a range containing all values (-∞, +∞). 创建包含所有值的范围 (-∞, +∞)。
      Type Parameters:
      C - Comparable type | 可比较类型
      Returns:
      all range | 全范围
    • singleton

      public static <C extends Comparable<? super C>> Range<C> singleton(C value)
      Create a singleton range [value, value]. 创建单值范围 [value, value]。
      Type Parameters:
      C - Comparable type | 可比较类型
      Parameters:
      value - the value | 值
      Returns:
      singleton range | 单值范围
    • create

      public static <C extends Comparable<? super C>> Range<C> create(Range.BoundType lowerBoundType, C lower, Range.BoundType upperBoundType, C upper)
      Create a range with explicit bound types. 使用显式边界类型创建范围。
      Type Parameters:
      C - Comparable type | 可比较类型
      Parameters:
      lowerBoundType - lower bound type | 下界类型
      lower - lower endpoint | 下端点
      upperBoundType - upper bound type | 上界类型
      upper - upper endpoint | 上端点
      Returns:
      the range | 范围
    • contains

      public boolean contains(C value)
      Check if value is contained in this range. 检查值是否在此范围内。
      Parameters:
      value - the value | 值
      Returns:
      true if contains | 如果包含则返回 true
    • hasLowerBound

      public boolean hasLowerBound()
      Check if this range has a lower endpoint. 检查此范围是否有下端点。
      Returns:
      true if has lower | 如果有下端点则返回 true
    • hasUpperBound

      public boolean hasUpperBound()
      Check if this range has an upper endpoint. 检查此范围是否有上端点。
      Returns:
      true if has upper | 如果有上端点则返回 true
    • lowerEndpoint

      public C lowerEndpoint()
      Return the lower endpoint. 返回下端点。
      Returns:
      lower endpoint | 下端点
      Throws:
      IllegalStateException - if no lower bound | 如果无下界
    • upperEndpoint

      public C upperEndpoint()
      Return the upper endpoint. 返回上端点。
      Returns:
      upper endpoint | 上端点
      Throws:
      IllegalStateException - if no upper bound | 如果无上界
    • isLowerBoundClosed

      public boolean isLowerBoundClosed()
      Check if lower bound is closed. 检查下界是否闭合。
      Returns:
      true if closed | 如果闭合则返回 true
    • isUpperBoundClosed

      public boolean isUpperBoundClosed()
      Check if upper bound is closed. 检查上界是否闭合。
      Returns:
      true if closed | 如果闭合则返回 true
    • lowerBoundType

      public Range.BoundType lowerBoundType()
      Get the lower bound type. 获取下界类型。
      Returns:
      lower bound type | 下界类型
      Throws:
      IllegalStateException - if no lower bound | 如果无下界
    • upperBoundType

      public Range.BoundType upperBoundType()
      Get the upper bound type. 获取上界类型。
      Returns:
      upper bound type | 上界类型
      Throws:
      IllegalStateException - if no upper bound | 如果无上界
    • isEmpty

      public boolean isEmpty()
      Check if this range is empty. 检查此范围是否为空。
      Returns:
      true if empty | 如果为空则返回 true
    • encloses

      public boolean encloses(Range<C> other)
      Check if this range encloses another range. 检查此范围是否包含另一个范围。
      Parameters:
      other - other range | 另一个范围
      Returns:
      true if encloses | 如果包含则返回 true
    • isConnected

      public boolean isConnected(Range<C> other)
      Check if this range is connected to another (can form contiguous range). 检查此范围是否与另一个连接(可以形成连续范围)。
      Parameters:
      other - other range | 另一个范围
      Returns:
      true if connected | 如果连接则返回 true
    • intersection

      public Range<C> intersection(Range<C> other)
      Return the intersection with another range. 返回与另一个范围的交集。
      Parameters:
      other - other range | 另一个范围
      Returns:
      intersection | 交集
      Throws:
      IllegalArgumentException - if not connected | 如果不连接
    • span

      public Range<C> span(Range<C> other)
      Return the span (smallest range enclosing both). 返回跨度(包含两者的最小范围)。
      Parameters:
      other - other range | 另一个范围
      Returns:
      span | 跨度
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object