如何在 JOOL 中创建一个范围
How to create a Range in JOOL
谁能帮我举例说明如何在 JOOL
中创建范围 & JOOL 中的 Range
是什么意思?它的 java 文档说
A range is a special {@link Tuple2} with two times the same type.
另外,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 结束的范围。可以通过两种方式创建范围:-
- 通过从 Jool 库调用参数类型为
Tuple2
的构造函数
Range range = new Range<>(Tuple.tuple(20, 30));
或
- 通过使用 2 个相同类型的值调用构造函数
Range range = new Range<>(20,30);
现在,您可以在范围 overlap
和 intersection
上执行 2 个操作。
Overlap表示一个Range中至少有一个元素存在于其他Range中。 overlaps
方法 returns 是或否。请参见下面的示例:-
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.
}
}
类似地,交集表示两个Range之间的交集产生的Range。请参见下面的示例:-
套餐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 的用例场景。
谁能帮我举例说明如何在 JOOL
中创建范围 & JOOL 中的 Range
是什么意思?它的 java 文档说
A range is a special {@link Tuple2} with two times the same type.
另外,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 结束的范围。可以通过两种方式创建范围:-
- 通过从 Jool 库调用参数类型为
Tuple2
的构造函数
Range range = new Range<>(Tuple.tuple(20, 30));
或
- 通过使用 2 个相同类型的值调用构造函数
Range range = new Range<>(20,30);
现在,您可以在范围 overlap
和 intersection
上执行 2 个操作。
Overlap表示一个Range中至少有一个元素存在于其他Range中。 overlaps
方法 returns 是或否。请参见下面的示例:-
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.
}
}
类似地,交集表示两个Range之间的交集产生的Range。请参见下面的示例:-
套餐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 的用例场景。