
- Guava 教程
- Guava - 首頁
- Guava - 概述
- Guava - 環境搭建
- Guava - Optional 類
- Guava - Preconditions 類
- Guava - Ordering 類
- Guava - Objects 類
- Guava - Range 類
- Guava - Throwables 類
- Guava - 集合工具類
- Guava - 快取工具類
- Guava - 字串工具類
- Guava - 基本型別工具類
- Guava - 數學工具類
- Guava 有用資源
- Guava - 快速指南
- Guava - 有用資源
- Guava - 討論
Guava - Range 類
Range 表示一個區間或一個序列。它用於獲取位於特定範圍內的數字/字串集。
類宣告
以下是com.google.common.collect.Range<C>類的宣告:
@GwtCompatible public final class Range<C extends Comparable> extends Object implements Predicate<C>, Serializable
方法
序號 | 方法及描述 |
---|---|
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) 返回包含所有大於或等於 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) 如果 values 中的每個元素都包含在此範圍中,則返回 true。 |
10 | static <C extends Comparable<?>> Range<C> downTo(C endpoint, BoundType boundType) 從給定的 endpoint 返回一個範圍,該 endpoint 可以是包含的(閉合)或排除的(開放),並且沒有上限。 |
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) 返回包含所有嚴格大於 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) 返回一個範圍,該範圍沒有下限,直到給定的 endpoint,該 endpoint 可以是包含的(閉合)或排除的(開放)。 |
繼承的方法
此類繼承自以下類:
- 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 ]