Guava Range类

Guava Range类

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

类声明

以下是 com.google.common.collect.Range 类的声明 –

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

方法

Sr.No 方法与描述
1 static <C extends Comparable<?>> Range<C> all() 返回包含类型 C 的所有值的范围。
2 boolean apply(C input)已弃用 仅供满足 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) 返回包含所有大于或等于下界和小于或等于上界的值的范围。
7 static <C extends Comparable<?>> Range<C> closedOpen(C lower, C upper) 返回包含所有大于或等于下界且严格小于上界的值的范围。
8 boolean contains(C value) 如果value在此范围的边界内,则返回true。
9 boolean containsAll(Iterable <? extends C> values) 如果此范围中包含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) 如果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) 如果存在被这个范围和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) 返回包含严格大于下限且严格小于上限的所有值的范围。
25 static <C extends Comparable<?>> Range<C> openClosed(C lower, C upper) 返回包含严格大于下限且小于或等于上限的所有值的范围。
26 static <C extends Comparable<?>> Range<C> range(C lower, BoundType lowerType, C upper, BoundType upperType)返回一个范围,该范围包含从下限到上限的任何值,其中每个端点可以是包含(闭合)或不包含(开放)的。
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) 返回一个没有下限的范围,直到给定的上限,可以是包含的(闭合的)也可以是排除的(开放的)。

继承的方法

这个类继承了以下类的方法:

Range类示例

使用您选择的任何编辑器创建以下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 ]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程