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
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:
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptionstatic <C extends Comparable<? super C>>
Range<C> all()Create a range containing all values (-∞, +∞).static <C extends Comparable<? super C>>
Range<C> atLeast(C lower) Create a range with no upper bound [lower, +∞).static <C extends Comparable<? super C>>
Range<C> atMost(C upper) Create a range with no lower bound (-∞, upper].static <C extends Comparable<? super C>>
Range<C> closed(C lower, C upper) Create a closed range [lower, upper].static <C extends Comparable<? super C>>
Range<C> closedOpen(C lower, C upper) Create a closed-open range [lower, upper).booleanCheck if value is contained in this range.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.booleanCheck if this range encloses another range.booleanstatic <C extends Comparable<? super C>>
Range<C> greaterThan(C lower) Create a range with no upper bound (lower, +∞).inthashCode()booleanCheck if this range has a lower endpoint.booleanCheck if this range has an upper endpoint.intersection(Range<C> other) Return the intersection with another range.booleanisConnected(Range<C> other) Check if this range is connected to another (can form contiguous range).booleanisEmpty()Check if this range is empty.booleanCheck if lower bound is closed.booleanCheck if upper bound is closed.static <C extends Comparable<? super C>>
Range<C> lessThan(C upper) Create a range with no lower bound (-∞, upper).Get the lower bound type.Return the lower endpoint.static <C extends Comparable<? super C>>
Range<C> open(C lower, C upper) Create an open range (lower, upper).static <C extends Comparable<? super C>>
Range<C> openClosed(C lower, C upper) Create an open-closed range (lower, upper].static <C extends Comparable<? super C>>
Range<C> singleton(C value) Create a singleton range [value, value].Return the span (smallest range enclosing both).toString()Get the upper bound type.Return the upper endpoint.
-
Method Details
-
closed
Create a closed range [lower, upper]. 创建闭区间 [lower, upper]。- Type Parameters:
C- Comparable type | 可比较类型- Parameters:
lower- lower endpoint | 下端点upper- upper endpoint | 上端点- Returns:
- closed range | 闭区间
-
open
Create an open range (lower, upper). 创建开区间 (lower, upper)。- Type Parameters:
C- Comparable type | 可比较类型- Parameters:
lower- lower endpoint | 下端点upper- upper endpoint | 上端点- Returns:
- open range | 开区间
-
closedOpen
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
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
Create a range with no lower bound (-∞, upper]. 创建无下界的范围 (-∞, upper]。- Type Parameters:
C- Comparable type | 可比较类型- Parameters:
upper- upper endpoint | 上端点- Returns:
- range | 范围
-
lessThan
Create a range with no lower bound (-∞, upper). 创建无下界的范围 (-∞, upper)。- Type Parameters:
C- Comparable type | 可比较类型- Parameters:
upper- upper endpoint | 上端点- Returns:
- range | 范围
-
atLeast
Create a range with no upper bound [lower, +∞). 创建无上界的范围 [lower, +∞)。- Type Parameters:
C- Comparable type | 可比较类型- Parameters:
lower- lower endpoint | 下端点- Returns:
- range | 范围
-
greaterThan
Create a range with no upper bound (lower, +∞). 创建无上界的范围 (lower, +∞)。- Type Parameters:
C- Comparable type | 可比较类型- Parameters:
lower- lower endpoint | 下端点- Returns:
- range | 范围
-
all
Create a range containing all values (-∞, +∞). 创建包含所有值的范围 (-∞, +∞)。- Type Parameters:
C- Comparable type | 可比较类型- Returns:
- all range | 全范围
-
singleton
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
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
Return the lower endpoint. 返回下端点。- Returns:
- lower endpoint | 下端点
- Throws:
IllegalStateException- if no lower bound | 如果无下界
-
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
Get the lower bound type. 获取下界类型。- Returns:
- lower bound type | 下界类型
- Throws:
IllegalStateException- if no lower bound | 如果无下界
-
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
-
isConnected
-
intersection
Return the intersection with another range. 返回与另一个范围的交集。- Parameters:
other- other range | 另一个范围- Returns:
- intersection | 交集
- Throws:
IllegalArgumentException- if not connected | 如果不连接
-
span
-
equals
-
hashCode
-
toString
-