Guava - Useful Classes
- Guava - Optional Class
- Guava - Preconditions Class
- Guava - Ordering Class
- Guava - Objects Class
- Guava - Range Class
- Guava - Throwables Class
- Guava - LoadingCache Interface
Guava - Collection Utilities
- Guava - Collections Utilities
- Guava - MultiSet Interface
- Guava - MultiMap Interface
- Guava - BiMap Interface
- Guava - Table Interface
Guava - String Utilities
- Guava - String Utilities
- Guava - Joiner class
- Guava - Splitter
- Guava - CharMatcher
- Guava - CaseFormat
Guava - Primitive Utilities
- Guava - Primitive Utilities
- Guava - Bytes
- Guava - Shorts
- Guava - Ints
- Guava - Longs
- Guava - Floats
- Guava - Doubles
- Guava - Chars
- Guava - Booleans
Guava - Math Utilities
Guava - Useful Resources
Guava - Range Class
Range represents an interval or a sequence. It is used to get a set of numbers/ strings lying in a particular range.
Class Declaration
Following is the declaration for com.google.common.collect.Range<C> class −
@GwtCompatible
public final class Range<C extends Comparable>
extends Object
implements Predicate<C>, Serializable
| Sr.No | Method & Description |
|---|---|
| 1 |
static <C extends Comparable<?>> Range<C> all() Returns a range that contains every value of type C. |
| 2 |
boolean apply(C input)Deprecated. Provided only to satisfy the Predicate interface; use contains(C) instead. |
| 3 |
static <C extends Comparable<?>> Range<C> atLeast(C endpoint) Returns a range that contains all values greater than or equal to endpoint. |
| 4 |
static <C extends Comparable<?>> Range<C> atMost(C endpoint) Returns a range that contains all values less than or equal to endpoint. |
| 5 |
Range<C> canonical(DiscreteDomain<C> domain) Returns the canonical form of this range in the given domain. |
| 6 |
static <C extends Comparable<?>> Range<C> closed(C lower, C upper) Returns a range that contains all values greater than or equal to lower and less than or equal to upper. |
| 7 |
static <C extends Comparable<?>> Range<C> closedOpen(C lower, C upper) Returns a range that contains all values greater than or equal to lower and strictly less than upper. |
| 8 |
boolean contains(C value) Returns true if value is within the bounds of this range. |
| 9 |
boolean containsAll(Iterable<? extends C> values) Returns true if every element in values is contained in this range. |
| 10 |
static <C extends Comparable<?>> Range<C> downTo(C endpoint, BoundType boundType) Returns a range from the given endpoint, which may be either inclusive (closed) or exclusive (open), with no upper bound. |
| 11 |
static <C extends Comparable<?>> Range<C> encloseAll(Iterable<C> values) Returns the minimal range that contains all of the given values. |
| 12 |
boolean encloses(Range<C> other) Returns true if the bounds of other do not extend outside the bounds of this range. |
| 13 |
boolean equals(Object object) Returns true if object is a range having the same endpoints and bound types as this range. |
| 14 |
static <C extends Comparable<?>> Range<C> greaterThan(C endpoint) Returns a range that contains all values strictly greater than endpoint. |
| 15 |
int hashCode() Returns a hash code for this range. |
| 16 |
boolean hasLowerBound() Returns true if this range has a lower endpoint. |
| 17 |
boolean hasUpperBound() Returns true if this range has an upper endpoint. |
| 18 |
Range<C> intersection(Range<C> connectedRange) Returns the maximal range enclosed by both this range and connectedRange, if such a range exists. |
| 19 |
boolean isConnected(Range<C> other) Returns true if there exists a (possibly empty) range which is enclosed by both this range and other. |
| 20 |
boolean isEmpty() Returns true if this range is of the form [v..v) or (v..v]. |
| 21 |
static <C extends Comparable<?>> Range<C> lessThan(C endpoint) Returns a range that contains all values strictly less than endpoint. |
| 22 |
BoundType lowerBoundType() Returns the type of this range's lower bound: BoundType.CLOSED if the range includes its lower endpoint, BoundType.OPEN if it does not. |
| 23 |
C lowerEndpoint() Returns the lower endpoint of this range. |
| 24 |
static <C extends Comparable<?>> Range<C> open(C lower, C upper) Returns a range that contains all values strictly greater than lower and strictly less than upper. |
| 25 |
static <C extends Comparable<?>> Range<C> openClosed(C lower, C upper) Returns a range that contains all values strictly greater than lower and less than or equal to upper. |
| 26 |
static <C extends Comparable<?>> Range<C> range(C lower, BoundType lowerType, C upper, BoundType upperType) Returns a range that contains any value from lower to upper, where each endpoint may be either inclusive (closed) or exclusive (open). |
| 27 |
static <C extends Comparable<?>> Range<C> singleton(C value) Returns a range that contains only the given value. |
| 28 |
Range<C> span(Range<C> other) Returns the minimal range that encloses both this range and other. |
| 29 |
String toString() Returns a string representation of this range, such as "[3..5)" (other examples are listed in the class documentation). |
| 30 |
BoundType upperBoundType() Returns the type of this range's upper bound: BoundType.CLOSED if the range includes its upper endpoint, BoundType.OPEN if it does not. |
| 31 |
C upperEndpoint() Returns the upper endpoint of this range. |
| 32 |
static <C extends Comparable<?>> Range<C> upTo(C endpoint, BoundType boundType) Returns a range with no lower bound up to the given endpoint, which may be either inclusive (closed) or exclusive (open). |
Methods Inherited
This class inherits methods from the following class −
- java.lang.Object
Example - Checking if Element is Present in Range
GuavaTester.java
package com.tutorialspoint;
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());
}
private void printRange(Range<Integer> range) {
System.out.print("[ ");
for(int grade : ContiguousSet.create(range, DiscreteDomain.integers())) {
System.out.print(grade +" ");
}
System.out.println("]");
}
}
Output
Run the GuavaTester and verify the output −
[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
Example - Creating Different Types of Ranges
GuavaTester.java
package com.tutorialspoint;
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> 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);
}
private void printRange(Range<Integer> range) {
System.out.print("[ ");
for(int grade : ContiguousSet.create(range, DiscreteDomain.integers())) {
System.out.print(grade +" ");
}
System.out.println("]");
}
}
Output
Run the GuavaTester and verify the output −
(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 ]
Example - Range Operations
GuavaTester.java
package com.tutorialspoint;
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);
//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("]");
}
}
Output
Run the GuavaTester and verify the output −
[0,9] : [ 0 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 ]