Guava Range(范围) Guava对象类 Guava Throwables类 范围表示间隔或序列。它用于获取位于特定范围内的一组数字/字符串。 类声明 以下是 com.google.common.collect.Range 类的声明- @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)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) 返回一个没有下限到达给定端点的范围,该范围可以是包含(闭合)或独占(打开)。 方法继承 该类继承以下类中的方法 - java.lang.Object继承 范围类的示例 使用您选择的任何编辑器在 C:/ > Guava中创建以下java程序 。 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 ] Guava对象类 Guava Throwables类