如何在 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 结束的范围。可以通过两种方式创建范围:-

  1. 通过从 Jool 库调用参数类型为 Tuple2 的构造函数

Range range = new Range<>(Tuple.tuple(20, 30));

  1. 通过使用 2 个相同类型的值调用构造函数

Range range = new Range<>(20,30);

现在,您可以在范围 overlapintersection 上执行 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 的用例场景。