Package org.aoju.bus.core.lang.range
Class BoundedRange<T extends Comparable<? super T>>
java.lang.Object
org.aoju.bus.core.lang.range.BoundedRange<T>
- Type Parameters:
T- 边界值类型
- All Implemented Interfaces:
Predicate<T>
参考Guava的Range实现,用于描述作为上下界的两个
Bound实例围成的一段区间
作为Predicate使用时,可检验指定值是否在区间中,即指定值是否同时满足上下界的Bound.test(T)方法
当通过工厂方法创建区间时,若区间为空,则会抛出IllegalArgumentException, 但是通过交并操作仍有可能创建出满足上述描述的空区间 此时若空区间参与操作可能得到意外的结果,
因此对通过非工厂方法得到的区间,在操作前有必要通过isEmpty()进行检验- Since:
- Java 17+
- Author:
- Kimi Liu
-
Method Summary
Modifier and TypeMethodDescriptionstatic <T extends Comparable<? super T>>
BoundedRange<T> all()构建一个上下界皆无限大的区间,即{x | -∞ < x < +∞}static <T extends Comparable<? super T>>
BoundedRange<T> atLeast(T lowerBound) {x | lowerBound < x < +∞}static <T extends Comparable<? super T>>
BoundedRange<T> atMost(T upperBound) {x | -∞ < x <= max}static <T extends Comparable<? super T>>
BoundedRange<T> close(T lowerBound, T upperBound) 构建一个闭区间,即{x | lowerBound <= x <= upperBound}static <T extends Comparable<? super T>>
BoundedRange<T> closeOpen(T lowerBound, T upperBound) 构建一个左闭右开区间,即{x | lowerBound <= x < upperBound}boolean比较两个实例是否相等gap(BoundedRange<T> other) 若other与当前区间不相连,则获得两区间中间的间隔部分获取下界获取下界值获取上界获取上界值static <T extends Comparable<? super T>>
BoundedRange<T> greaterThan(T lowerBound) {x | lowerBound < x < +∞}inthashCode()获取实例哈希值boolean是否有下界boolean是否有上界intersection(BoundedRange<T> other) 若other与当前区间相交,则获得该区间与当前区间的交集booleanisDisjoint(BoundedRange<T> other) other是否与当前区间不相交booleanisEmpty()当前区间是否为空 当由下界left与上界right构成的区间, 符合下述任意条件时,认为当前区间为空: 对任何区间,有left > right; 对半开半闭区间[left, right),有left == right; 对开区间(left, right),有left == right; 对半开半闭区间(left, right],有left == right;booleanisIntersected(BoundedRange<T> other) other是否与当前区间相交:booleanisProperSubset(BoundedRange<T> other) 当前区间是否是other的真子集booleanisProperSuperset(BoundedRange<T> other) other是否是当前区间的子集booleanisSubset(BoundedRange<T> other) 当前区间是否是other的子集booleanisSuperset(BoundedRange<T> other) other是否是当前区间的子集static <T extends Comparable<? super T>>
BoundedRange<T> lessThan(T upperBound) {x | -∞ < x < upperBound}static <T extends Comparable<? super T>>
BoundedRange<T> open(T lowerBound, T upperBound) 构建一个开区间,即{x | lowerBound < x < upperBound}static <T extends Comparable<? super T>>
BoundedRange<T> openClose(T lowerBound, T upperBound) 构建一个左闭右开区间,即{x | lowerBound < x <= upperBound}span(BoundedRange<T> other) 获得包含当前区间与指定区间的最小的区间subAtLeast(T min) 截取当前区间中大于等于min的部分,若min不在该区间中,则返回当前区间本身截取当前区间中小于等于max的部分,若max不在该区间中,则返回当前区间本身subGreatThan(T min) 截取当前区间中大于min的部分,若min不在该区间中,则返回当前区间本身subLessThan(T max) 截取当前区间中小于max的部分,若max不在该区间中,则返回当前区间本身boolean指定值是否在当前区间内toString()输出当前区间的字符串,格式为"[a, b]"unionIfIntersected(BoundedRange<T> other) 若other与当前区间相交,则将其与当前区间合并
-
Method Details
-
all
构建一个上下界皆无限大的区间,即{x | -∞ < x < +∞}- Type Parameters:
T- 比较对象类型- Returns:
- 区间
-
close
构建一个闭区间,即{x | lowerBound <= x <= upperBound}- Type Parameters:
T- 边界值类型- Parameters:
lowerBound- 下界,不能为空upperBound- 上界,不能为空- Returns:
- 区间
- Throws:
IllegalArgumentException- 当创建的区间表示的集合为空时抛出NullPointerException- 上界或下界为null时抛出
-
open
构建一个开区间,即{x | lowerBound < x < upperBound}- Type Parameters:
T- 边界值类型- Parameters:
lowerBound- 下界,不能为空upperBound- 上界,不能为空- Returns:
- 区间
- Throws:
IllegalArgumentException- 当创建的区间表示的集合为空时抛出NullPointerException- 上界或下界为null时抛出
-
closeOpen
public static <T extends Comparable<? super T>> BoundedRange<T> closeOpen(T lowerBound, T upperBound) 构建一个左闭右开区间,即{x | lowerBound <= x < upperBound}- Type Parameters:
T- 边界值类型- Parameters:
lowerBound- 下界,不能为空upperBound- 上界,不能为空- Returns:
- 区间
- Throws:
IllegalArgumentException- 当创建的区间表示的集合为空时抛出NullPointerException- 上界或下界为null时抛出
-
openClose
public static <T extends Comparable<? super T>> BoundedRange<T> openClose(T lowerBound, T upperBound) 构建一个左闭右开区间,即{x | lowerBound < x <= upperBound}- Type Parameters:
T- 边界值类型- Parameters:
lowerBound- 下界,不能为空upperBound- 上界,不能为空- Returns:
- 区间
- Throws:
IllegalArgumentException- 当创建的区间表示的集合为空时抛出NullPointerException- 上界或下界为null时抛出
-
greaterThan
{x | lowerBound < x < +∞}- Type Parameters:
T- 边界值类型- Parameters:
lowerBound- 下界,不能为空- Returns:
- 区间
- Throws:
NullPointerException- 下界为null时抛出- See Also:
-
atLeast
{x | lowerBound < x < +∞}- Type Parameters:
T- 边界值类型- Parameters:
lowerBound- 下界,不能为空- Returns:
- 区间
- Throws:
NullPointerException- 下界为null时抛出- See Also:
-
lessThan
{x | -∞ < x < upperBound}- Type Parameters:
T- 边界值类型- Parameters:
upperBound- 上界,不能为空- Returns:
- 区间
- Throws:
NullPointerException- 上界为null时抛出- See Also:
-
atMost
{x | -∞ < x <= max}- Type Parameters:
T- 边界值类型- Parameters:
upperBound- 上界,不能为空- Returns:
- 区间
- Throws:
NullPointerException- 上界为null时抛出- See Also:
-
getLowerBound
-
getLowerBoundValue
-
hasLowerBound
public boolean hasLowerBound()是否有下界- Returns:
- 是否
-
getUpperBound
-
getUpperBoundValue
-
hasUpperBound
public boolean hasUpperBound()是否有上界- Returns:
- 是否
-
isEmpty
public boolean isEmpty()当前区间是否为空 当由下界left与上界right构成的区间, 符合下述任意条件时,认为当前区间为空:
- 对任何区间,有
left > right; - 对半开半闭区间
[left, right),有left == right; - 对开区间
(left, right),有left == right; - 对半开半闭区间
(left, right],有left == right;
- Returns:
- 是否
- 对任何区间,有
-
toString
-
equals
-
hashCode
-
isSuperset
other是否是当前区间的子集- Parameters:
other- 另一个区间- Returns:
- 是否
-
isProperSuperset
other是否是当前区间的子集- Parameters:
other- 另一个区间- Returns:
- 是否
-
isSubset
当前区间是否是other的子集- Parameters:
other- 另一个区间- Returns:
- 是否
-
isProperSubset
当前区间是否是other的真子集- Parameters:
other- 另一个区间- Returns:
- 是否
-
isDisjoint
other是否与当前区间不相交- Parameters:
other- 另一个区间- Returns:
- 是否
-
isIntersected
other是否与当前区间相交:- Parameters:
other- 另一个区间- Returns:
- 是否
-
test
-
unionIfIntersected
若other与当前区间相交,则将其与当前区间合并- Parameters:
other- 另一个区间- Returns:
- 合并后的新区间,若两区间不相交则返回当前集合
-
span
获得包含当前区间与指定区间的最小的区间- Parameters:
other- 另一个区间- Returns:
- 包含当前区间与指定区间的最小的区间
-
gap
若other与当前区间不相连,则获得两区间中间的间隔部分- Parameters:
other- 另一个区间- Returns:
- 代表间隔部分的区间,若两区间相交则返回
null
-
intersection
若other与当前区间相交,则获得该区间与当前区间的交集- Parameters:
other- 另一个区间- Returns:
- 代表交集的区间,若无交集则返回
null
-
subGreatThan
截取当前区间中大于min的部分,若min不在该区间中,则返回当前区间本身- Parameters:
min- 最大的左值- Returns:
- 区间
-
subAtLeast
截取当前区间中大于等于min的部分,若min不在该区间中,则返回当前区间本身- Parameters:
min- 最大的左值- Returns:
- 区间
-
subLessThan
截取当前区间中小于max的部分,若max不在该区间中,则返回当前区间本身- Parameters:
max- 最大的左值- Returns:
- 区间
-
subAtMost
截取当前区间中小于等于max的部分,若max不在该区间中,则返回当前区间本身- Parameters:
max- 最大的左值- Returns:
- 区间
-