Guava - 范围类

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

类声明

以下是 com的声明.google.common.collect.Range< C> class :

@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)Deprecated.

仅用于满足Predicate接口;使用包含(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)

如果值在此范围的范围内,则返回true.

9

boolean containsAll(Iterable<? extends C> values)

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

10

静态< C extends Comparable<?>>范围&LT c取代; downTo(C端点,BoundType boundType)

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

11

static< C extends Comparable<?>>范围&LT c取代; encloseAll(Iterable< C> values)

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

12

布尔值封闭(范围< C>其他)

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

13

boolean equals(Object object)

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

14

static< C extends Comparable<?>>范围&LT c取代; greaterThan(C端点)

返回一个范围,其中包含严格大于endpoint的所有值.

15

int hashCode()

返回此范围的哈希码.

16

boolean hasLowerBound()

如果此范围的端点较低,则返回true.

17

boolean hasUpperBound( )

如果此范围具有上限,则返回true.

18

范围< C>交点(范围< 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)

返回包含严格小于端点的所有值的范围.

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)

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

方法继承

此类继承方法以下类 :

  • java.lang.Object

范围类的示例

使用您选择的任何编辑器创建以下java程序,例如 C:/>番石榴.

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; 
公共类GuavaTester {
 public static void main(String args []){
 GuavaTester tester = new GuavaTester(); 
 tester.testRange(); 
} 
 private void testRange(){
//创建范围[a,b] = {x | a< = x< = b} 
范围<整数> range1 = Range.closed(0,9); 
 System.out.print("[0,9]:"); 
 printRange(range1); 
 System.out.println("5存在:"+ range1.contains(5)); 
 System.out.println("(1,2,3)存在:"+ range1.containsAll(Ints.asList(1,2,3))); 
 System.out.println("下界:"+ range1.lowerEndpoint()); 
 System.out.println("Upper Bound:"+ range1.upperEndpoint()); 
//创建一个范围(a,b)= {x | a< x< b} 
范围<整数> range2 = Range.open(0,9); 
 System.out.print("(0,9):"); 
 printRange(range2); 
//创建一个范围(a,b] = {x | a< x< = b} 
范围<整数> range3 = Range.openClosed(0,9); 
 System.out.print("(0,9]:"); 
 printRange(range3); 
//创建范围[a,b)= {x | a< = x< b} 
范围<整数> range4 = Range.closedOpen(0,9); 
 System.out.print("[0,9):"); 
 printRange(range4); 
//创建一个开放范围(9,无穷大
范围<整数> range5 = Range.greaterThan(9); 
 System.out.println("(9, infinity):"); 
 System.out.println("下界:"+ range5.lowerEndpoint()); 
 System.out.println("上限存在:"+ range5.hasUpperBound( )); 
范围<整数> range6 = Range.closed(3,5); 
 printRange(range6); 
//检查子范围[3 ,[5]在[0,9] 
 System.out.println("[0,9]包含[3,5]:"+ range1.encloses(range6)); 
范围<整数> range7 = Range.closed(9,20); 
 printRange(range7); 
//检查要连接的范围
 System.out.println(" [0,9]连接[9,20]:"+ range1.isConnected(range7)); 
范围<整数> range8 = Range.closed(5,15); 
//交点
 printRange(range1.intersection(range8)); 
//span 
 printRange(ran ge1.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 ]