当前位置: 首页 > 文档资料 > Guava 中文文档 >

范围类(Range Class)

优质
小牛编辑
129浏览
2023-12-01

范围表示间隔或序列。 它用于获取位于特定范围内的一组数字/字符串。

Class 声明 (Class Declaration)

以下是com.google.common.collect.Range《C》类的声明 -

@GwtCompatible
public final class Range<C extends Comparable>
   extends Object
      implements Predicate<C>, Serializable

方法 (Methods)

Sr.No方法和描述
1

static 《C extends Comparable《?》》 Range《C》 all()

返回包含C类型的每个值的范围。

2

boolean apply(C input)Deprecated.

仅提供满足Predicate接口; 使用contains(C)代替。

3

static 《C extends Comparable《?》》 Range《C》 atLeast(C endpoint)

返回包含大于或等于endpoint的所有值的范围。

4

static 《C extends Comparable《?》》 Range《C》 atMost(C endpoint)

返回包含小于或等于endpoint的所有值的范围。

5

Range《C》 canonical(DiscreteDomain《C》 domain)

返回给定域中此范围的规范形式。

6

static 《C extends Comparable《?》》 Range《C》 closed(C lower, C upper)

返回包含大于或等于lower且小于或等于upper的所有值的范围。

7

static 《C extends Comparable《?》》 Range《C》 closedOpen(C lower, C upper)

返回包含大于或等于lower且严格小于upper的所有值的范围。

8

boolean contains(C value)

如果value在此范围的范围内,则返回true。

9

boolean containsAll(Iterable《? extends C》 values)

如果值中的每个元素都包含在此范围内,则返回true。

10

static 《C extends Comparable《?》》 Range《C》 downTo(C endpoint, BoundType boundType)

返回给定端点的范围,该范围可以是包含(闭合)或独占(打开),没有上限。

11

static 《C extends Comparable《?》》 Range《C》 encloseAll(Iterable《C》 values)

返回包含所有给定值的最小范围。

12

boolean encloses(Range《C》 other)

如果其他边界不超出此范围的边界,则返回true。

13

boolean equals(Object object)

如果object是具有与此范围相同的端点和绑定类型的范围,则返回true。

14

static 《C extends Comparable《?》》 Range《C》 greaterThan(C endpoint)

返回包含严格大于endpoint的所有值的范围。

15

int hashCode()

返回此范围的哈希码。

16

boolean hasLowerBound()

如果此范围具有较低的端点,则返回true。

17

boolean hasUpperBound()

如果此范围具有上端点,则返回true。

18

Range《C》 intersection(Range《C》 connectedRange)

如果存在此范围,则返回此范围和connectedRange包含的最大范围。

19

boolean isConnected(Range《C》 other)

如果存在由此范围和其他范围包含的(可能为空)范围,则返回true。

20

boolean isEmpty()

如果此范围的格式为[v..v]或(v..v),则返回true。

21

static 《C extends Comparable《?》》 Range《C》 lessThan(C endpoint)

返回包含严格小于endpoint的所有值的范围。

22

BoundType lowerBoundType()

返回此范围下限的类型:BoundType.CLOSED如果范围包括其下端点,则为BoundType.OPEN(如果不包括)。

23

C lowerEndpoint()

返回此范围的下端点。

24

static 《C extends Comparable《?》》 Range《C》 open(C lower, C upper)

返回一个范围,其中包含严格大于lower且严格小于upper的所有值。

25

static 《C extends Comparable《?》》 Range《C》 openClosed(C lower, C upper)

返回一个范围,其中包含严格大于lower且小于或等于upper的所有值。

26

static 《C extends Comparable《?》》 Range《C》 range(C lower, BoundType lowerType, C upper, BoundType upperType)

返回包含从lower到upper的任何值的范围,其中每个端点可以是包含(闭合)或独占(打开)。

27

static 《C extends Comparable《?》》 Range《C》 singleton(C value)

返回仅包含给定值的范围。

28

Range《C》 span(Range《C》 other)

返回包含此范围和其他范围的最小范围。

29

String toString()

返回此范围的字符串表示形式,例如“[3..5)”(其他示例在类文档中列出)。

30

BoundType upperBoundType()

返回此范围上限的类型:BoundType.CLOSED如果范围包括其上端点,则为BoundType.OPEN(如果不包括)。

31

C upperEndpoint()

返回此范围的上端点。

32

static 《C extends Comparable《?》》 Range《C》 upTo(C endpoint, BoundType boundType)

返回一个没有下限到达给定端点的范围,该范围可以是包含(闭合)或独占(打开)。

方法继承 (Methods Inherited)

该类继承以下类中的方法 -

  • java.lang.Object

范围类的示例

使用您选择的任何编辑器在C:/》 Guava.创建以下java程序C:/》 Guava.

GuavaTester.java

import com.google.common.collect.ContiguousSet;
import com.google.common.collect.DiscreteDomain;
import com.google.common.collect.Range;
import com.google.common.primitives.Ints;
public class GuavaTester {
   public static void main(String args[]) {
      GuavaTester tester = new GuavaTester();
      tester.testRange();
   }
   private void testRange() {
      //create a range [a,b] = { x | a <= x <= b}
      Range<Integer> range1 = Range.closed(0, 9);	
      System.out.print("[0,9] : ");
      printRange(range1);		
      System.out.println("5 is present: " + range1.contains(5));
      System.out.println("(1,2,3) is present: " + range1.containsAll(Ints.asList(1, 2, 3)));
      System.out.println("Lower Bound: " + range1.lowerEndpoint());
      System.out.println("Upper Bound: " + range1.upperEndpoint());
      //create a range (a,b) = { x | a < x < b}
      Range<Integer> range2 = Range.open(0, 9);
      System.out.print("(0,9) : ");
      printRange(range2);
      //create a range (a,b] = { x | a < x <= b}
      Range<Integer> range3 = Range.openClosed(0, 9);
      System.out.print("(0,9] : ");
      printRange(range3);
      //create a range [a,b) = { x | a <= x < b}
      Range<Integer> range4 = Range.closedOpen(0, 9);
      System.out.print("[0,9) : ");
      printRange(range4);
      //create an open ended range (9, infinity
      Range<Integer> range5 = Range.greaterThan(9);
      System.out.println("(9,infinity) : ");
      System.out.println("Lower Bound: " + range5.lowerEndpoint());
      System.out.println("Upper Bound present: " + range5.hasUpperBound());
      Range<Integer> range6 = Range.closed(3, 5);	
      printRange(range6);
      //check a subrange [3,5] in [0,9]
      System.out.println("[0,9] encloses [3,5]:" + range1.encloses(range6));
      Range<Integer> range7 = Range.closed(9, 20);	
      printRange(range7);
      //check ranges to be connected		
      System.out.println("[0,9] is connected [9,20]:" + range1.isConnected(range7));
      Range<Integer> range8 = Range.closed(5, 15);	
      //intersection
      printRange(range1.intersection(range8));
      //span
      printRange(range1.span(range8));
   }
   private void printRange(Range<Integer> range) {		
      System.out.print("[ ");
      for(int grade : ContiguousSet.create(range, DiscreteDomain.integers())) {
         System.out.print(grade +" ");
      }
      System.out.println("]");
   }
}

验证结果

使用javac编译器编译类如下 -

C:\Guava>javac GuavaTester.java

现在运行GuavaTester来查看结果。

C:\Guava>java GuavaTester

看到结果。

[0,9] : [ 0 1 2 3 4 5 6 7 8 9 ]
5 is present: true
(1,2,3) is present: true
Lower Bound: 0
Upper Bound: 9
(0,9) : [ 1 2 3 4 5 6 7 8 ]
(0,9] : [ 1 2 3 4 5 6 7 8 9 ]
[0,9) : [ 0 1 2 3 4 5 6 7 8 ]
(9,infinity) : 
Lower Bound: 9
Upper Bound present: false
[ 3 4 5 ]
[0,9] encloses [3,5]:true
[ 9 10 11 12 13 14 15 16 17 18 19 20 ]
[0,9] is connected [9,20]:true
[ 5 6 7 8 9 ]
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ]