任何人都可以帮我一个如何在JOOL
创建范围的例子&JOOL中的Range
是什么意思?它的java doc说
范围是一个特殊的{@link Tuple2},有两倍相同的类型。
此外,Range
有类似的方法
public boolean overlaps(Tuple2<T, T> other) {
return Tuple2.overlaps(this, other);
}
public boolean overlaps(T t1, T t2) {
return overlaps(new Range<>(t1, t2));
}
public Optional<Range<T>> intersect(Tuple2<T, T> other) {
return Tuple2.intersect(this, other).map(Range::new);
}
public Optional<Range<T>> intersect(T t1, T t2) {
return intersect(new Range<>(t1, t2));
}
请解释这些用例。谢谢!
Range
基本上就像数学范围,例如1..6是从1开始到6结束的范围。可以通过两种方式创建范围: -
Tuple2
类型参数的构造函数范围=新范围<>(Tuple.tuple(20,30));
要么
范围=新范围<>(20,30);
现在,您可以对范围overlap
和intersection
执行2个操作。
重叠意味着Range中至少有一个元素也存在于其他范围内。 overlaps
方法返回true或false。见下面的例子: -
package jool.features.analysis.tuple;
import org.jooq.lambda.tuple.Range;
import org.jooq.lambda.tuple.Tuple;
public class RangeTest {
public static void main(String[] args) {
Range<Integer> range = new Range<>(20,30);
Range<Integer> range2 = new Range<>(Tuple.tuple(20,30));
System.out.println(range.overlaps(22,40)); // returns true as 22 falls between 20 & 30.
}
}
类似地,交叉点表示从两个范围之间的交叉点出来的范围。见下面的例子: -
package jool.features.analysis.tuple;
import org.jooq.lambda.tuple.Range;
import org.jooq.lambda.tuple.Tuple;
public class RangeTest {
public static void main(String[] args) {
Range<Integer> range = new Range<>(20,30);
Range<Integer> range2 = new Range<>(Tuple.tuple(20,30));
System.out.println(range.intersection(22,40)); // returns Range(22,30)
}
}
在Range中,您可以传递相同类型的值或泛型类型的Tuple2,如下所示: -
Tuple2<T,T>
,其中T是任何通用类型
即,元组中的值都应该是相同的类型,而元组的长度应该只是2。
我花了一段时间才明白这一切是如何运作的。但我仍然不理解使用Range适合的用例场景。