Class BoundedRange<T extends Comparable<? super T>>

java.lang.Object
org.miaixz.bus.core.lang.range.BoundedRange<T>
Type Parameters:
T - 边界值类型
All Implemented Interfaces:
Serializable, Predicate<T>, PredicateX<T>

public class BoundedRange<T extends Comparable<? super T>> extends Object implements PredicateX<T>

参考GuavaRange实现,用于描述作为上下界的两个Bound实例围成的一段区间。 作为Predicate使用时,可检验指定值是否在区间中,即指定值是否同时满足上下界的Bound.test(T)方法。

区间的类型,支持通过工厂方法创建下述几种类型的区间:

区间
区间 数学定义 工厂方法
(a, b) {x | a < x < b} open(T, T)
[a, b] {x | a <= x <= b} close(T, T)
(a, b] {x | a < x <= b} openClose(T, T)
[a, b) {x | a <= x < b} closeOpen(T, T)
(a, +∞) {x | x > a} greaterThan(T)
[a, +∞) {x | x >= a} atLeast(T)
(-∞, b) {x | x < b} lessThan(T)
(-∞, b] {x | x <= b} atMost(T)
(-∞, +∞) {x} all()

空区间

根据数学定义,当区间中无任何实数时,认为该区间 代表的集合为空集, 用户可通过isEmpty()确认当前实例是否为空区间。 若实例上界a,下界为b,则当实例满足下述任意条件时,认为其为一个空区间:

  • a > b
  • [a, b),且a == b
  • (a, b),且a == b
  • (a, b],且a == b
当通过工厂方法创建区间时,若区间为空,则会抛出IllegalArgumentException, 但是通过交并操作仍有可能创建出满足上述描述的空区间。 此时若空区间参与操作可能得到意外的结果, 因此对通过非工厂方法得到的区间,在操作前有必要通过isEmpty()进行检验。
Since:
Java 17+
Author:
Kimi Liu
See Also: