在 Java 中创建一个范围

Rupam Yadav 2023年10月12日
  1. 在 Java 中创建并检查一个数字是否在范围内
  2. 在 Java 中使用 Guava Range 创建一个范围
  3. 在 Java 中使用 Apache Range 创建范围
  4. 在 Java 中使用 ValueRange 创建范围
在 Java 中创建一个范围

Java 中的各种库可以创建一个范围并检查创建的范围之间是否存在给定的数字。我们还可以使用 Java 中的传统方法来检查给定数字是否包含在范围的最小值和最大值之间。让我们使用第三方库以及传统方法来完成此任务。

在 Java 中创建并检查一个数字是否在范围内

这是检查数字是否在范围内的传统方法。我们作为参数传递。在这里,我们创建了一个类 InRange,它有一个默认构造函数来初始化传递给成员变量的参数。它创建一个范围并检查数字是否在该范围内。

我们使用 new 关键字创建 InRange 类的实例,并在默认构造函数中传递范围的较低和较高值。现在我们检查数字 50 是否在 1099 之间。

我们调用 containsInRange() 方法,该方法返回一个布尔值,使用 number >= lowerRange && number <= higherRange 语句检查数字是否大于或等于下限且小于或等于上限。因此,50 落在给定范围内,因此 true 作为输出返回。

import org.w3c.dom.ranges.Range;

class InRange {
  private int lowerRange;
  private int higherRange;

  public InRange(int low, int high) {
    lowerRange = low;
    higherRange = high;
  }

  public boolean containsInRange(int number) {
    return (number >= lowerRange && number <= higherRange);
  }
}
public class TestRange {
  public static void main(String[] args) {
    InRange inRange = new InRange(10, 99);
    int number = 50;
    System.out.println(
        "Is number " + number + " in our range : " + inRange.containsInRange(number));
  }
}

输出:

Is number 50 in our range : true

在 Java 中使用 Guava Range 创建一个范围

这是一个第三方库。Guava Range 表示具有端点 ab 的区间,它们形成边界。我们将检查一个数字是否在 ab 之间。

下面给出了这个库所需的 maven 依赖项。

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>29.0-jre</version>
</dependency>

我们使用标准工厂方法创建这种类型的 range 实例。创建的范围可以基于独占或包含端点是开放的或封闭的。

open(a,b) 方法创建并返回一个表示 a < range < b 的范围。这意味着 ab 被排除在外。而对于方法 closed(a, b),范围是 a<= range <=b,因此包括 ab

如果传递的参数在给定范围内,则 contains() 方法返回 true。例如,如果我们使用 contains() 方法检查实例 range 是否包含数字 8,它会返回 false,因为它是一个独占范围。

但同时在 range1 实例上调用方法 contains(8) 对相同的参数返回 true,因为它是一个包含范围。我们可以在输出中看到这一点。

import com.google.common.collect.Range;
public class TestRange {
  public static void main(String[] args) {
    Range<Integer> range = Range.open(1, 8);
    Range<Integer> range1 = Range.closed(1, 8);

    System.out.println(range.contains(3));
    System.out.println(range.contains(8));
    System.out.println(range1.contains(8));
  }
}

输出:

true
false
true

在 Java 中使用 Apache Range 创建范围

Apache Range 是另一个第三方库,用于检查数字是否在范围内。下面给出了这个库的 maven 依赖项。

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.0.1</version>
 </dependency>

Apache Range 类表示从最小值到最大值(包括)的一系列值。我们使用工厂方法 between() 创建了一个 testRange 实例,它表示从 1034 的范围,即范围也包括这两个值。

contains() 方法检查指定元素是否存在于范围内。如果范围包含该元素,则返回 true。

import org.apache.commons.lang3.Range;
public class TestRange {
  public static void main(String[] args) {
    Range<Integer> testRange = Range.between(10, 34);
    System.out.println(testRange.c(2));
    System.out.println(testRange.contains(32));
  }
}

输出:

false
true

在 Java 中使用 ValueRange 创建范围

我们还可以使用 Java 8 ValueRange,它创建一个包含最小值和最大值的范围。isValidIntValue 方法检查传递的参数是否在有效范围内。它还验证范围内的所有值是否都适合 int

import java.time.temporal.ValueRange;
public class TestRange {
  public static void main(String[] args) {
    ValueRange range = ValueRange.of(0, 2);
    System.out.println(range.isValidIntValue(8));
  }
}

输出:

false
作者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn