Guava Range類
Range 表示一個間隔或一個序列。它被用於獲取一組數字/串在一個特定範圍之內。
類聲明
以下是com.google.common.collect.Range<C>類的聲明:
@GwtCompatible public final class Range<C extends Comparable> extends Object implements Predicate<C>, Serializable
方法
S.N. | 方法及說明 |
---|---|
1 |
static <C extends Comparable<?>> Range<C> all() 返回包含C型的每一個值範圍 |
2 |
boolean apply(C input)Deprecated. 隻有提供滿足謂詞接口;使用包含(C)來代替。 |
3 |
static <C extends Comparable<?>> Range<C> atLeast(C endpoint) 返回包含大於或等於終點(endpoint)的所有值的範圍內。 |
4 |
static <C extends Comparable<?>> Range<C> atMost(C 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) 返回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) 返回true,如果對象是具有相同端點和綁定類型,這個範圍內的範圍。 |
14 |
static <C extends Comparable<?>> Range<C> greaterThan(C 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() 返回true,如果這個範圍是形式 [v..v) 或 (v..v]. |
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) 返回一個包含所有值嚴格大於下限和嚴格比上端更小一個範圍。 |
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) 返回最小的範圍包圍兩者這個範圍和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
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 ]